在Unity 3D中旋转对象

时间:2015-02-21 16:25:21

标签: unity3d 3d rotation accelerometer

我可以使用以下代码使用加速度计旋转对象。

transform.rotation = Quaternion.LookRotation(Input.acceleration.normalized, Vector3.up);

但我想旋转对象,例如屏幕正在旋转 - 0度,90度,180度和360度。我怎样才能使用Unity 3D?

2 个答案:

答案 0 :(得分:12)

您可以像这样使用transform.rotation

transform.rotation = new Quaternion(rotx, roty, rotz, rotw);

您可以像这样使用transform.Rotate

transform.Rotate(rotx, roty, rotz);

Documentation for Quaternion

Documentation for transform.rotation

使用加速度计输入旋转屏幕的示例:

float accelx, accely, accelz = 0;

void Update ()
{
accelx = Input.acceleration.x;
accely = Input.acceleration.y;
accelz = Input.acceleration.z;
transform.Rotate (accelx * Time.deltaTime, accely * Time.deltaTime, accelz * Time.deltaTime);
}

如果要将对象旋转到特定角度,请使用:

float degrees = 90;
    Vector3 to = new Vector3(degrees, 0, 0);

    transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, to, Time.deltaTime);

这将围绕x轴旋转90度。

注意:如果您不理解transform.eulerAngles是什么或Vector3.Lerp,您可以像“unity 3d transform.eulerAngles”一样进行搜索,并且应该首先获得结果之一是团结的文件。 在开始使用之前阅读文档

答案 1 :(得分:1)

为了自己旋转你的游戏对象

int _rotationSpeed = 15;

void Update () {

    // Rotation on y axis
    transfrom.rotate (0, _rotationSpeed * Time.deltaTime, 0);
}