[魂类复刻学习日志]1.输入组件相关
本节内容:
Unity中的输入
- 在游玩游戏时,我们通常会使用wasd来控制人物,而人物也通常有前后左右的四种移动方式,根据每个人不同的习惯,我们也可以更改移动的对应键,从而使得操作最适合自己。
- 在Unity中,我们使用Input库(UnityEngine)中的一系列GetKey方法来获取用户设备的输入,它会返回1/0
双轴移动方式
- 双轴移动的处理:以上(前),右为正方向(仅在水平方向,垂直方向这里不做处理),我们首先获取上下的输入,相减,若为1,则是向上有移动,反之则为向下,左右同理。
TargetDup = (Input.GetKey(KeyUp) ? 1.0f:0) - (Input.GetKey(KeyDown)? 1.0f:0);
TargetDright = (Input.GetKey(KeyRight) ? 1.0f : 0) - (Input.GetKey(KeyLeft) ? 1.0f : 0);
- 此时我们只需要在Update()中判断监测这两个值是否有改变即可
Mathf.SmoothDamp()
- 虽然我们似乎完成了接收输入,但这样的改变事实上是非常迅速的,也就是说当人物在移动的时候,用我们这样的监听输入方法,TargetDup以及TargetDright的值总是会在1 -1 0这三个整数间随着我们按键迅速改变,这样其实有些僵硬。
- 为了解决整个问题,我们可以使用Mathf库的SmoothDamp()函数,将数值的变化进行一个衰减。
Dup = Mathf.SmoothDamp(Dup, TargetDup, ref velocityDup, 0.1f);
Dright = Mathf.SmoothDamp(Dright, TargetDright, ref velocityDright, 0.1f);
- SmoothDamp()需要传入一些例如当前的值,目标值,以及变化速度和时间等,它会返回一个变化后的值,每帧执行即可达到平滑变化的效果