unity 输入向量moveDir的y轴为0,为什么运行时y轴会随物体运动递增?
发布网友
发布时间:2024-08-19 07:17
我来回答
共1个回答
热心网友
时间:2024-08-21 10:31
在上述代码中,向量moveDir只在实例化时被赋值一次,其y轴值为0。然而,在之后的代码中,transform.position随着时间的推移会不断发生变化,因此向量moveDir乘以的moveSpeed和Time.deltaTime的乘积也在不断地改变,从而导致物体的运动方向不断发生变化。
这种变化可能会使物体看起来在垂直方向上移动,但实际上是物体在水平面上进行的运动,只是由于运动的速度和方向的变化导致了一些视觉上的错觉。如果想要使物体在水平面上保持运动方向不变,可以考虑在更新物体的位置时只改变其水平方向上的坐标值,而将垂直方向的坐标值保持不变,即:
Vector3 horizontalMove = new Vector3(inputVector.x, 0f, inputVector.y);
transform.position += horizontalMove.normalized * moveSpeed * Time.deltaTime;
这样可以确保物体在水平面上保持一定的运动方向。