【问题标题】:Unity5 - How to limit the rotation of a GameObjectUnity5 - 如何限制游戏对象的旋转
【发布时间】:2017-03-06 22:06:43
【问题描述】:

我的玩家漂浮在太空中,当它应该左转或右转时,它会沿 z 轴旋转

float x = CrossPlatformInputManager.GetAxis ("Horizontal");
float y = CrossPlatformInputManager.GetAxis ("Vertical");

transform.Translate (Vector3.forward * speed * Time.deltaTime);
rigidBody.AddForce (transform.up * flySpeed * Time.deltaTime);
transform.Rotate (new Vector3 (Time.deltaTime * -y * rotateSpeed,
    Time.deltaTime* x * rotateSpeed, -Time.deltaTime * -x * rotateSpeed));

【问题讨论】:

  • 这既不是 C 也不是 UnityScript - 它是 C#
  • 另外,查看此问题的正确工具是调试器(或使用print 调试) - 但是您总是围绕 3 个轴旋转,因此不清楚为什么您会期望不同的结果
  • 我写到 C#,但是...,好吧,我从我的脚本中剪切了 z 位置,但是旋转有限
  • docs.unity3d.com/ScriptReference/Transform.Rotate.html 您同时围绕所有三个轴旋转。如果你只想绕一个轴旋转,三个欧拉角中的两个需要为零
  • 我认为您在问两个不同的问题,在标题中您是在问谁来限制旋转,例如 +120 到 -120 度。但是在下一句中,您的问题似乎是游戏对象正在沿您未预料到的轴旋转。

标签: c# unity3d unity5


【解决方案1】:

如果您希望您的对象仅在 z 轴上旋转并假设您有与您的对象关联的刚体,您可以通过检查 x 和 y 轴上的约束部分来冻结检查器中刚体组件中的旋转。

这样只能在z轴旋转

【讨论】:

  • 亲爱的朋友,我的游戏是关于太空中的宇航员,当我向左转时他旋转,但当我需要在本地轴上 30 级时,他旋转 360 级,对不起我的英语!
猜你喜欢
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多