Devo pre-impostare questo con I am not never anywhere a una persona di matematica. Il codice che ho trovato in un'altra domanda sembra funzionare un po '... eccetto che fa ruotare l'oggetto che ho posto in un cerchio grande, per lo più fuori dallo schermo.Rotazione di un oggetto attorno a un punto vettore centrale2
Ecco il codice:
public void Update(GameTime gameTime)
{
Location = RotateAboutOrigin(Center, Origin, 0.01f);
}
public Vector2 RotateAboutOrigin(Vector2 point, Vector2 origin, float rotation)
{
var u = point - origin; //point relative to origin
if (u == Vector2.Zero)
return point;
var a = (float)Math.Atan2(u.Y, u.X); //angle relative to origin
a += rotation; //rotate
//u is now the new point relative to origin
u = u.Length() * new Vector2((float)Math.Cos(a), (float)Math.Sin(a));
return u + origin;
}
posizione è impostato con un click del mouse in una posizione arbitraria attorno al vettore centrale.
Il centro è il centro (si indovina) dell'oggetto che "luogo" quando clicco. È determinato dividendo semplicemente l'altezza e la larghezza della trama.
L'origine è il vettore2 Sto tentando di ruotare. È impostato staticamente a 384,384.
Come meglio che posso dire, è sempre la distanza tra i due vettori e quindi utilizzando atan2 per determinare l'angolo. Il resto dopo è un mistero per me. Sono consapevole che dovrei imparare cosa fa tutto, e intendo farlo quando vado al college (solo un decennio di ritardo) a partire dalla primavera. Ho provato a leggerli, ma sono perso. Qualsiasi aiuto sarebbe apprezzato.
Inoltre, se si dispone di un buon punto di partenza per il sito di dummies che è possibile consigliare, sarei lieto di leggerlo.
http://stackoverflow.com/questions/7846775/how-to-gradually-rotate-an-object-to-face-another-turning-the-shortest-distance – Olle89