web-dev-qa-db-fra.com

Faire pivoter un objet dans Unity 3D

Je peux utiliser le code suivant pour faire pivoter un objet à l'aide d'un accéléromètre.

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

Mais je voudrais faire pivoter un objet comme par exemple l'écran tourne - 0, 90, 180 et 360 degrés. Comment puis-je le faire avec Unity 3D?

6
Artur Załęski

Vous pouvez utiliser transform.rotation comme ça:

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

[~ # ~] ou [~ # ~]

Vous pouvez utiliser transform.Rotate comme ça:

transform.Rotate(rotx, roty, rotz);

Documentation pour Quaternion

Documentation pour transform.rotation

Exemple d'écran rotatif avec entrée accéléromètre:

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);
}

Si vous souhaitez faire pivoter l'objet selon un angle spécifique, utilisez:

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

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

Cela tournera de 90 degrés autour de l'axe x.

18
user5819