Object roteren in Unity 3D

Ik kan de volgende code gebruiken om een object te roteren met een versnellingsmeter.

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

Maar ik zou het object willen roteren zoals het scherm bijvoorbeeld roteert – 0, 90, 180 en 360 graden. Hoe kan ik dit doen met Unity 3D?


Antwoord 1, autoriteit 100%

Je kunt transform.rotationals volgt gebruiken:

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

OF

U kunt transform.Rotateals volgt gebruiken:

transform.Rotate(rotx, roty, rotz);

Documentatie voor Quaternion

Documentatie voor transform.rotation

Voorbeeld voor roterend scherm met versnellingsmeterinvoer:

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

Als u het object naar een specifieke hoek wilt draaien, gebruik dan:

float degrees = 90;
Vector3 to = new Vector3(degrees, 0, 0);
transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, to, Time.deltaTime);

Dit draait 90 graden rond de x-as.


Antwoord 2, autoriteit 3%

Om je game-object alleen te draaien

int _rotationSpeed = 15;
void Update () {
    // Rotation on y axis
    transfrom.rotate (0, _rotationSpeed * Time.deltaTime, 0);
}

Other episodes