Attualmente sto esaminando lo sviluppo del gioco XNA con il linguaggio C #.
Ho due classi: il gestore del gioco principale e una classe "sprite". Di seguito è riportato uno pseudo-codice di base che spero descriva adeguatamente il problema.
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
}
}
}
Fondamentalmente: quando l'utente fa clic da qualche parte nella finestra di gioco, vengono prese le coordinate xey del mouse e l'oggetto di gioco si sposterà verso quella posizione per un periodo di tempo.
Bene ... il codice funziona, ma è brutto e gli oggetti non si muovono direttamente verso l'oggetto (invece, è il movimento diagonale, seguito dal movimento ad asse singolo). Immagino che ci siano alcune funzioni matematiche che posso usare, ma sinceramente non ho idea di dove iniziare. Eventuali suggerimenti?