Domanda

Sto solo cominciando a imparare il framework di sviluppo del gioco Unity3D. Sto cercando di fare un "punto" cilindro un altro oggetto quando viene premuto qualche chiave.

public GameObject target;
void Update () {
    if (Input.GetKeyDown(KeyCode.A)) {
        ???
    }
}

So che devo usare la posizione del cilindro del bersaglio e di modificare la rotazione del cilindro, ma non riesco a capire come, io non credo di capire che cosa quelle Quaternioni sono ancora.

Mi piacerebbe davvero apprezzare alcun aiuto! Grazie,
Manuel

È stato utile?

Soluzione

In primo luogo, il vostro cilindro ha bisogno di qualche nozione di 'in avanti' o la sua 'direzione di puntamento' (le mie parole) nello spazio locale del cilindro. Per questo si può assumere (o visivamente vedi), + X, + Y, Z +, -X, -Y o -Z; oppure è possibile specificare la propria punta arbitrario vettore in qualche altra direzione.

In secondo luogo, è necessario un vettore che i punti dal centro del cilindro al centro di l'altro oggetto (si menzionato questo già).

Ora, è possibile utilizzare Quaternion.FromToRotation(...) di Unity per generare un quaternione che, se applicata alla rotazione mondo del cilindro, ruoterà la direzione di puntamento di essere nella direzione del vostro altro oggetto. Fatto.

Si noti che se il cilindro è più di un paio trasforma profonde, allora potrebbe essere necessario modificare la meccanica di questo approccio leggermente possibilmente spiegare trasforma genitori.

Altri suggerimenti

C'è una ragione per cui si utilizza Quaternioni userei angoli Quaternions.Eular che rappresentano Quaternioni come vettore 3 che è il modo in cui comunemente intendiamo angoli.

quello che Ducky ha detto è corretto se si hanno problemi con Quaternioni mi raccomando non li utilizzano fino ad ottenere una migliore comprensione di questi insiemi di angoli.

speranza aiuta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top