如何在Unity中使角色面对相反的方向?

时间:2019-04-29 04:58:20

标签: unity3d game-physics

对于我的一生,我无法弄清楚这一点。我花了几个小时弄清楚四元数和欧拉角,但没有设法使我的角色面对相反的方向。到目前为止,这是我尝试过的事情:

  1. Quaternion lookAt = Quaternion.Euler(-transform.rotation.eulerAngles);

  2. Quaternion lookAt = Quaternion.Inverse(transform.rotation.eulerAngles);

  3. gameObject.transform.Rotate(new Vector3(0,180,0)
  4. Quaternion lookAt = Quaternion.Euler(-transform.localEulerAngles)

我认为这很简单,但显然不是。我不知道要使用本地坐标还是世界坐标(我都尝试过)。在上述大多数情况下,角色旋转的数量取决于角色面对的方向。 transform.Rotate完全不会旋转我的角色。我不知道为什么这么难,而且我在网上找到的大多数解决方案也没有太大帮助。非常感谢您有任何想法。

1 个答案:

答案 0 :(得分:0)

好的,终于找到了解决方案。谢谢路易斯(https://answers.unity.com/questions/446536/reverse-axis-of-quaternion.html

显然,您需要将四元数相乘才能获得精确的旋转。不知道为什么其他答案都忽略了这一点。

我最终要做的是lookQuaternion = transform.rotation*Quaternion.AngleAxis(180, Vector3.up); ,使角色在Y轴上面向相反的方向