用恒定旋转unity2d向前移动

时间:2015-10-02 12:38:48

标签: unity3d unityscript

void Update () {

    Vector3 pos = transform.position;
    Vector3 velocity = new Vector3 ( 0  ,-maxspeed * Time.deltaTime  ,0);
    pos += transform.rotation * velocity;
    transform.position = pos;
    gameObject.transform.rotation = new Quaternion (0, 0, 1, 0);


}

这是我向前移动陨石的脚本(从上到下)。但是我希望我的陨石围绕它的中心旋转。我添加了一个simle行

gameObject.transform.rotation = new Quaternion (0, 0, 1, 0);

但它无法正常工作。它是以弧形旋转陨石而不是围绕它自己的中心。

我在互联网上搜索过围绕其中心旋转物体但我没有得到任何适当的指导。

2 个答案:

答案 0 :(得分:0)

使用:

meteoritesRotationSpeed = 10.0f;
gameObject.transform.Rotate (Vector3.forward * meteoritesRotationSpeed * Time.deltaTime);

而不是:

gameObject.transform.rotation = new Quaternion (0, 0, 1, 0);

答案 1 :(得分:0)

首先,要使用Quaternion进行旋转,您必须将它们相乘,因此transform.rotation *= myQuaternion;只需向前旋转陨石,就必须在Vector3.right轴上旋转它,其他答案接近,但它实际上会在错误的轴上旋转而不会向前推进,就像你问的那样。

float speed = 5f;
meteorite.transform.Rotate(Vector3.right * speed * Time.deltaTime);