J'examine actuellement le développement de jeux XNA avec le langage C #.
J'ai deux classes: le gestionnaire de jeu principal et une classe "sprite". Voici un pseudo-code de base qui, je l'espère, décrit correctement le problème.
Game.cs
class game {
sprite the_sprite;
void update(time) {
var mouse = mouse.state
if(mouse.clicked) { this.the_sprite.moveTo(mouse.x, mouse.y) }
this.the_sprite.update(time)
base.update(time)
}
}
Sprite.cs
class sprite {
vector2 location;
vector2 move_to;
void moveTo(x, y) { this.move_to = new vector2(x, y) }
void update(time) {
if(this.location.x > this.move_to.x /* (or less than) */) {
// adjust location.x
}
if(this.location.y > this.move_to.y /* (or greater than) */) {
// adjust location.y
}
}
}
Fondamentalement: lorsque l'utilisateur clique quelque part dans la fenêtre de jeu, les coordonnées x et y de la souris sont prises et l'objet de jeu se déplace vers cet emplacement sur une période de temps.
Eh bien ... le code fonctionne, mais c'est moche, et les objets ne se déplacent pas directement vers l'objet (à la place, c'est un mouvement diagonal, suivi d'un mouvement à axe unique). Je suppose qu'il y a des fonctions mathématiques que je peux utiliser, mais je n'ai honnêtement aucune idée par où commencer. Aucune suggestion?