【学习笔记】自学Unity Day02

本文分享了作者自学Unity游戏开发过程中的经验,包括遇到的问题、使用Unity官方资源、通过InputManager控制角色移动,以及如何调整移动速度以保证一致性。
摘要由CSDN通过智能技术生成

前言:主要想记录下自己自学的过程、期间遇见的问题、不同版本需要调整的地方,方便以后复习能及时找到对应的部分;同时也希望给想要入门游戏开发、学习unity的各位一些经验,减少一些弯路

学习资料目前主要依靠 unity 官网,我的想法是先根据官方的游戏套件能够做出个可玩的小游戏,这样有一定的正反馈更容易坚持下去

下面是学习 unity 过程中经常要用到的一些网站

unity learn:https://learn.unity.com/

中文课堂:Unity3d 教程 | Unity 中文课堂

资源商店:Unity Asset Store - The Best Assets for Game Making

用户手册:Unity - Manual: Unity User Manual 2022.3 (LTS)

开发工具:unity hub3.7.0、visual studio 2022、rider(和vs 2选1即可)

之前的文章

【学习笔记】自学Unity Day01icon-default.png?t=N7T8https://blog.csdn.net/SCH_Evile/article/details/137154843

上一篇文章已经能够让 ruby 进行移动,现在我们修改脚本,让我们能够通过键盘的输入控制 ruby 的移动

通过键盘输入控制 ruby 移动

查看 unity 的输入设置:edit - project settings - input manager(旧版本在 input 中)

对于键盘按键,负值键(a、左方向键)按下时为 -1,正值键(d、右方向键)按下时为 1;通过 input system 可以方便的自定义操作按键

双击打开脚本 RubyController,修改 update 方法

// 获取键盘输入 
float horizontal = Input.GetAxis("Horizontal"); 
Vector2 position = transform.position; 
position.x = position.x + 0.1f * horizontal; 
transform.position = position;

说明:GetAxis 和 GetAxisRaw 都可以获取键盘的输入,两者的区别在于 GetAxisRaw 返回的是 -1,1;而 GetAxis 返回的是 -1 - 1之间的数,有个渐变的过程

注意:字符串 "Horizontal" 需要和 input manager 中的 Name 保持一致

现在如果没有按键,则 horizontal 的值为 0, ruby 不会进行移动,反之则进行左右移动

添加垂直移动

和水平移动类型,先在 input manager 中查看垂直移动的输入信息

可以看到对应的 Name 是 Vertical,对应的键盘输入是 s、w 和方向键上、下

在脚本的 update 方法中添加如下代码

float vertical = Input.GetAxis("Vertical");

调整移动速度

update 方法每帧都会调用,不同的电脑配置可能会导致相同时间 ruby 的移动速度不同,为了让 ruby 的移动速度在不同的配置下保持一致,我们需要做些配置;

可以在 unity 的 game 视图右侧点击 state,即可查看游戏运行时的帧数

要解决这个问题,我们需要用单位/秒来移动 ruby,为此我们需要修改 update 脚本

// 获取键盘输入 
float horizontal = Input.GetAxis("Horizontal"); 
float vertical = Input.GetAxis("Vertical"); 

Vector2 position = transform.position; 

// 让 ruby 保持一致的移动速度
position.x = position.x + 0.1f * horizontal * Time.deltaTime; 
position.y = position.y + 0.1f * vertical * Time.deltaTime; 

transform.position = position;

说明:0.1f * horizontal * Time.deltaTime

0.1f 就是 ruby 的速度

horizontal 表示方向矢量,表示移动的方向(1 向右 -1 向左)

Time.deltaTime 表示每帧运行的时间

三者的乘积即表示当前帧的移动距离和方向

现在我们可以调整 ruby 的移动速度,同时让 ruby 在不同的环境下保持一致的速度

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值