2,589
社区成员




我有一个小车他只能往前开,然后他有移动速度和转速度。现在设定了一个目的地和方向,怎么让他直接开到那个位置和方向。
Vector3 direction = Target.position - transform.position;
float angle = Vector3.Angle(direction, transform.forward);
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(direction), RotationSpeed * Time.deltaTime);
if (direction.sqrMagnitude > 0.001f)
{
transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
}
我移动看到这个但这个有2个问题一个是转的没走的快就会一直转圈圈,甚至也没法到指定的方向最多也只是到那个位置
你这里 transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);是沿着世界坐标系的Z轴正方向平移。你要改成沿物体本地坐标系transform.forward
另外你这里的旋转角度是指什么?是有角速度旋转还是能直接改变物体旋转方向?前者稍微麻烦一点在更新函数里每帧修正转转角度,后者的话可以直接让物体朝向目标点方向transform.LookAt(new Vector3(Target.position.x,transform.position.y,Target.position.z))。