2010-11-21 9 views
0

Je fais un jeu de type astéroïdes, mais j'ai du mal à en rendre le mouvement aléatoire. Cela fait que ça va de haut en bas mais je les veux que les astéroïdes se déplacent dans toutes les directions, comment pourrais-je faire cela?Randomizing movement

public void Move() 
{ 
    for (int i = 0; i < asteroidList.Count; i++) 
     asteroidList[i] = new Vector2(asteroidList[i].X, asteroidList[i].Y + 2); 
} 

Répondre

1

Vous devez ajouter une autre propriété à la classe Asteroid. Dites MotionVector. Initialisez ses membres X et Y à partir de Random.Next(). Vous n'avez plus qu'à les ajouter aux propriétés X et Y à l'intérieur de cette boucle.

1

Chaque Asteriod pourrait avoir une CurrentPosition propriété (probablement un Point (pas sûr si vous avez besoin entier ou flottant X et Y coordonnées) et une propriété CurrentVelocity (un vecteur 2 dimensions (probablement float)) dont la composante X représente la la vitesse dans l'axe X et la composante Y représente la vitesse dans l'axe Y). Lorsque vous créez vos astéroïdes, vous attribuez la Position actuelle, soit à partir de la position de l'astéroïde parent qui vient d'être détruit et qui se brise en morceaux ou lorsque vous initialisez aléatoirement les nouveaux astéroïdes pour le prochain "niveau".

Au cours Move() vous incrémentez le CurrentPosition par CurrentVelocity.

Si vous attribuez chaque Asteroid une propriété définissant la physique inhérente à la motion que vous pouvez soutenir des choses intéressantes comme les astéroïdes filature, d'accélération ou astéroïdes décélérer, etc.