我有一个性格/刚体,“她”可以转过身来。当我按下“团结”时,如果我向前/向后,那很好,她向前/向后移动。这是个很好的开始。
但是,如果我把她左转或右转,然后向前/后退,她现在就会侧身移动。
她是一个刚体组件,被设定为现场的家长。
当然,这并不难做,但我不知道如何设置她的旋转,以便当她转身时,她会‘向前’时,我按下按钮推动她前进!有很多第一人称射击游戏,你可以转身和移动‘前进’和球员走在正确的方向。
我现在的轮换脚本是:
Vector3 EulerAngleVelocity;
public float rotateSpeed = 250.0f;
void Update() {
if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.DownArrow))
{
MoveVector = PoolInput();
Move();
}
if (Input.GetKey(KeyCode.RightArrow))
{
EulerAngleVelocity = new Vector3(0, rotateSpeed, 0);
Quaternion deltaRotation = Quaternion.Euler(EulerAngleVelocity * Time.deltaTime);
rigidbody.MoveRotation(rigidbody.rotation * deltaRotation);
}
}
private void Move()
{
rigidbody.AddForce((MoveVector * moveSpeed));
}
private Vector3 PoolInput()
{
Vector3 dir = Vector3.zero;
dir.x = joystick.Horizontal();
dir.z = joystick.Vertical();
if (dir.magnitude > 1)
dir.Normalize();
return dir;
}发布于 2018-04-03 08:25:10
你在移动你的操纵杆,把这个方向与世界联系起来,而不是你的玩家。如果您想要添加相对于RigidBody的方向的强制,那么您想要使用的可能是rigidBody.AddRelativeForce (文档),而不是简单的rigidBody.AddForce。
发布于 2018-04-03 07:34:30
你的问题不是你的旋转代码,而是你的移动代码。你是在世界空间应用一个运动,而不是局部空间(“物体”-空间)。
例如,如果使用的是Vector3.Forward,则需要使用transform.Forward。
https://stackoverflow.com/questions/49624152
复制相似问题