我的GameObject的变换不会通过360 - "乒乓球"介于270 - 90之间。(Unity 3D C#)

时间:2014-10-17 19:53:40

标签: c# unity3d rotation transform

如果难以理解,请提前致意,如果需要,我会绘制图表。

我使用Unity3D开发游戏并且在播放器的转换方面遇到了麻烦。游戏是第一个人,3D,并且有重力会改变的点,允许玩家沿着墙走 - 这一切都已经开始运行。

当玩家的重力使其在墙上行走时,当我旋转角色以环顾其变形时表现得很奇怪。它可以旋转整整一圈,并且在玩游戏时角色没有明显的问题。

如果我在播放模式中查看检查员,请说我不断向右转,会发生以下情况:

  • 旋转增加到90度
  • 一旦达到90度,就会开始反向向下计数到0,好像我已改变方向(但我仍然向右转)
  • 然后它向下计数超过0并继续到270 - 一旦达到270,它就会再次开始重新计数,然后再增加到90,依此类推。其他轴偶尔会变化,只有0.00001度,但是它们保持在它们应该的值附近(同样的事情发生在地面上并且转动得很好,所以我不认为这是问题所在。)

序列将类似于:0, 1, 2 ... 88, 89, 90, 89, 88 ...1, 0, 359, ...271, 270, 271 ... 359, 0, 1 ...89, 90, 89 ...等。

当我在场景视图中观察变换时,它会像车窗上的雨刮器一样来回移动,但是我的角色本身只是朝一个方向转动。当我在地面时它尽可能完整的圆圈,即使价值仍然是" ping-ponging"。

是什么导致这种情况发生?当玩家角色在地板上时,它不会发生,只有当它在墙上时才会发生。我需要知道的原因是因为游戏中还有其他东西依赖于模仿玩家的轮换,这个问题给了我一些我不想要的行为。

非常感谢任何帮助,我有一段时间遇到麻烦了!

1 个答案:

答案 0 :(得分:0)

你不应该依赖Unity中的角度值,它使用四元数进行旋转:

https://unity3d.com/ru/learn/tutorials/modules/intermediate/scripting/quaternions http://docs.unity3d.com/ScriptReference/Quaternion.html

奇怪的行为来自这样一个事实,即角度值的多个组合代表相同的旋转。