Code:
proton.position.X = graphics.PreferredBackBufferWidth / 2;
proton.position.Y = graphics.PreferredBackBufferHeight / 2;
// ^ position, um die sich das objekt drehen soll (bildschirmmitte)
proton.angle += 0f; // Drehgeschwindigkeit
proton.angle %= MathHelper.TwoPi;
if (proton.distance > 40f) proton.distance -= (float) rand.Next(0, 5) / 10; // proton.distance ist der abstand vom rotierungspunkt
var protonPos = new Vector3(proton.position.X, proton.position.Y, 0);
var origin = new Vector2(proton.texture.Width, proton.texture.Height) / 2f;
Matrix mat = Matrix.CreateTranslation(new Vector3(-origin, 0)) * Matrix.CreateTranslation(new Vector3(proton.distance, 0, 0)) * Matrix.CreateRotationZ(proton.angle) * Matrix.CreateTranslation(protonPos);
proton.position = Vector2.Transform(Vector2.Zero, mat);
"proton" ist ne eigene Klasse:
Code:
public class Proton : Species
{
public float health;
public float distance;
public float angle;
public float speed;
}
Leitet sich von Species ab:
Code:
public class Species
{
public Texture2D texture;
public int id;
public Vector2 position;
}