unity3d 如何得到一个物体的旋转作为一个矢量3?

7cwmlq89  于 2023-01-09  发布在  其他
关注(0)|答案(3)|浏览(158)

我正在建模一个加速设备。为了这个目的,我想加速对象的方向,它是指向。我的想法是有一个向量的默认方向,然后我旋转这个向量根据旋转的变换。因此,我尝试使用以下代码:

Vector3 defaultDirection = (1f, 0f, 0f);
Vector3 rotation = transform.rotation.eulerAngles;
Debug.Log("x: " + rotation.x);
Debug.Log("y: " + rotation.y);
Debug.Log("z: " + rotation.z);

问题是我第一次尝试执行它时,输出如下所示:

x:0,3876027
y:0,004236011
z:0,38655568

对象,以及所有的父对象,都有一个0, 0, 0的旋转。我仔细检查了一下。我做错了什么?或者这只是由强制转换引起的不准确?

**EDIT:**为了澄清这一点,我的问题不是我不能旋转默认向量到旋转向量。我的问题是我得到了错误的旋转向量值。它应该是0,0,0,但输出显示我其他值。

t30tvxxf

t30tvxxf1#

    • 如果你想要一个好的答案,你必须澄清一下你的问题**,但是我认为你是在问如何旋转一个对象,使它面向另一个变换/向量3指定的位置。(如果不是这样,我道歉)。

Unity提供了很棒的文档和API,可能也会有所帮助:

如果只是存储值,请使用:第一个月
上面,在@TEEBQNE的评论中,你提到你想要"一个长度为1的向量指向你的对象的前面",你可以使用gameobject.transform.forward来得到这样的向量。
最好的!

atmip9wb

atmip9wb2#

Vector3 defaultDirection = new Vector3(1f,0f,0f);
        obj.eulerAngles = defaultDirection;
        Debug.Log("x: " + obj.rotation.eulerAngles.x);
        Debug.Log("y: " + obj.rotation.eulerAngles.y);
        Debug.Log("z: " + obj.rotation.eulerAngles.z);

这里尝试:)
注=“obj”是一个转换。

kognpnkq

kognpnkq3#

这将获取对象的实际世界旋转:

Vector3 rotation = transform.rotation.eulerAngles;

这将打印它:

Debug.Log("x: " + rotation.x);
Debug.Log("y: " + rotation.y);
Debug.Log("z: " + rotation.z);

所以,你的代码只是打印实际对象的世界旋转。

相关问题