首页 > 解决方案 > Quaternion.Euler 和 transform.Translate

问题描述

我正在尝试创建一个简单的游戏对象,您可以使用键盘移动和旋转它。它现在运行良好,但我唯一的问题是它一直在旋转对象的 X。我想将它锁定在某个位置,但仍然能够旋转游戏对象。我尝试通过 RigidBody 锁定,但没有成功。

我也尝试了 Quanternion.Euler,但后来发生了一个奇怪的错误。当我尝试向上移动 Z=90 和 Y=-90 上的旋转锁时,当我尝试向下移动旋转锁到 Z=-90 和 Y=90 时。仅当我尝试通过 Quanternion.Euler 将 X 更改为 -90 时才会发生这种情况。我的猜测是这个错误与 Transform.Translate 有关,我用来移动我的游戏对象并使其旋转的函数。

这是我的代码:

   transform.Translate(speed * Time.deltaTime, angularSpeed*Time.deltaTime, 0, Space.Self);
    transform.rotation = Quaternion.Euler(-90f, transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);
    if (Input.GetKey(KeyCode.W))
    {
        transform.Rotate(0, 1, 0);

    }

    if (Input.GetKey(KeyCode.S))
    {
        transform.Rotate(0,-1, 0);

    }

    if (Input.GetKey(KeyCode.D))
    {
        transform.Rotate(0,0, 0.2f);
        angularSpeed =-20;
    }

    if (Input.GetKey(KeyCode.A))
    {
        transform.Rotate(0, 0, -0.2f);
        angularSpeed =20;
    }

标签: unity3d

解决方案


推荐阅读