1.控制位置
1.1设置场景
创建一个平面和一个球体,将摄像机放到平面上方,使用正交视角,关闭球体的投射阴影
分别为球体和平面创建材质,并为球体的移动轨迹创建材质,同时为球体创建一个移动脚本
将MovingSphere和Trail Renderer组件挂到球体上,Trail Renderer可以标记出物体运动的轨迹
将轨迹材质附加到Trail Renderer组件的材质上面,设置轨迹宽度和颜色,在预览里拖动
1.2 读取玩家输入
由于是平面移动所以用vector2储存玩家输入,将x,和y初始化为0,使他们将球体固定在XZ平面上,y的输入相当于z
Vector2 playerInput;
private void Start()
{
playerInput.x = 0;
playerInput.y = 0;
}
void Update()
{
playerInput.x = Input.GetAxis("Horizontal");
playerInput.y = Input.GetAxis("Vertical");
transform.localPosition = new Vector3(playerInput.x, 0, playerInput.y);
}
调用方法Input.GetAxis作为输入。我们将水平值用于X,将垂直值用于Y。默认通过WASD控制输入,演示如下
1.3 归一化输入向量
轴在静止时返回零,而在极限时返回-1或1。当我们使用输入来设置球体的位置时,它被约束为具有相同范围的矩形。至少,按键输入就是这种情况,因为每次按键是独立的。如果是摇杆,则是连续的,通常我们在任何方向上都被限制为距原点的最大距离为1,从而将位置限制在一个圆内。
控制器输入的优点是,无论方向如何,输入向量的最大长度始终为1。因此,各个方向的移动速度都可以一样快。按键不是这种情况,单个按键的最大值为1,而同时按下两个按键的最大值为√2,这意味着对角线移动最快。
通过将输入矢量除以其大小,可以确保矢量的长度永远不会超过1。结果始终为单位长度矢量,除非