【问题标题】:Unity rotation issues统一轮换问题
【发布时间】:2018-07-11 03:29:38
【问题描述】:

我试图让模型在按下按钮时旋转 90 度 - 应该很简单,对吧? 好吧,由于某些奇怪的原因,整个系统都是一团糟。我会很感激一些帮助修复它

transform.parent.rotation = Quaternion.Euler(transform.parent.rotation.x, transform.parent.rotation.y , transform.parent.rotation.z);   

相反,模型只是沿随机方向旋转,看起来它们根本不应该与我的代码相关。

我启动游戏以在模型处于播放模式时旋转模型,但它的旋转方式似乎突然变了。

我对此感到非常困惑,希望能得到一些帮助来解决它

【问题讨论】:

  • transform.Rotate(0, 90, 0);

标签: unity3d rotation transform


【解决方案1】:

你的代码不像你想的那样工作。

Quaterinion.Euler 期望以欧拉角的形式输入,但您输入的是由 (x,y,z,w) 组成的 Quaterinon 的 (x,y,z),这就是为什么您会获得真正时髦的旋转。

https://docs.unity3d.com/ScriptReference/Quaternion.html

要获得变换的当前欧拉角,只需使用 transform.eulerAngles(或在您的情况下使用 transform.parent.eulerAngles

var euler = transform.parent.eulerAngles;
transform.parent.rotation = Quaternion.Euler(euler.x, euler.y, euler.z);

但是无论如何这不会改变旋转。 如果你想围绕Y-轴旋转90度,你可以像这样添加90

var euler = transform.parent.eulerAngles;
transform.parent.rotation = Quaternion.Euler(euler.x, euler.y+90, euler.z);

当然还有一种更简单的方法是围绕Y 旋转 90 度

transform.Rotate(0, 90, 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多