
输入是所有游戏必备的控制系统,它可以让玩家使用一些键盘设备控制屏幕上所发生的一切事情,如果屏幕中没有互动,那么就不叫游戏了,与短片或视频没区别。
要让玩家在Unity中控制游戏,首先需要选择编辑菜单 → 项目管理 → 选择Input Manager(输入管理),其中有大小、水平、垂直、鼠标等选项。

其实这些参数都是针对输入系统而所需的控制参数,例如控制的轴向,哪些键盘或鼠标按钮会影响这些控件。
默认的参数中都有自动填充,例如a和d键影响水平轴,而w和s键影响垂直轴,这些轴也可能受到箭头键的影响。
public class Player : MonoBehaviour
{
[SerializeField]
private float _mySpeed = 1f;
// 在第一个帧更新之前开始调用
void start()
{
// 将玩家的位置设置为 (0,0,0), 即游戏世界的中心.
transform. position = Vector3.zero;
}
// 每帧调用一次更新
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
// 每秒以“mySpeed”单位移动玩家
transform.position += Vector3.right * horizontalInput * _mySpeed * Time.deltaTime;
}
}
其中需要注意的主要内容是Input.GetAxis(“Horizontal”),这是在告诉Unity输入获取水平轴提供的当前值,该值由a和d键控制,这返回-1和1之间的浮点数,当d保持时,得到1,当保持A时,得到-1。
通过将这个系数乘以我们的速度(mySpeed),可以使用键盘控制正方形是向左还是向右移动。

也可以做类似的事情来增加垂直运动。
public class Player : MonoBehaviour
{
[SerializeField]
private float _mySpeed = 1f;
// 在第一个帧更新之前开始调用
void start()
{
// 将玩家的位置设置为 (0,0,0), 即游戏世界的中心.
transform. position = Vector3.zero;
}
// 每帧调用一次更新
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
// 每秒以“mySpeed”单位移动玩家
transform.position += Vector3.right * horizontalInput * _mySpeed * Time.deltaTime;
transform.position += Vector3.up * verticalInput * _mySpeed * Time.deltaTime;
}
}
现在也得到了垂直轴,用它来控制正方形向上和向下移动的程度,方法是将其乘以Vector3.up向量。

现在,就可以使用所有wasd键和箭头键甚至控制器操纵杆来移动这个正方形。
最后,为们可以打开输入管理器,在其中设置一些参数。

例如捕捉开关,修改重力值以及灵敏度等等,这样可以用来改变这个正方形移动的行为方式。
这是修改后的最终操控效果,速度明显慢了许多。
