不断旋转unity2d

问题描述 投票:0回答:2
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);
}

这是我用于向前移动陨石(从上到下)的脚本,但我希望我的陨石绕其中心旋转。我添加了类似的一行:

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

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

我在互联网上搜索过有关围绕其中心旋转物体的信息,但我没有得到任何正确的指导。

c# unity-game-engine
2个回答
0
投票

用途:

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

而不是这个:

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

0
投票

首先,要使用

Quaternion
旋转,您必须将它们相乘,因此
transform.rotation *= myQuaternion;
但要简单地向前旋转陨石,您必须在
Vector3.right
轴上旋转它,另一个答案很接近,但它会正如您所要求的,实际上在错误的轴上旋转并且不会向前倾斜。

float speed = 5f;
meteorite.transform.Rotate(Vector3.right * speed * Time.deltaTime);
© www.soinside.com 2019 - 2024. All rights reserved.