Obecnie zajmuję się tworzeniem gier XNA w języku C #.
Mam dwie klasy: główny moduł obsługi gry i klasę „sprite”. Poniżej znajduje się podstawowy pseudo-kod, który - mam nadzieję - odpowiednio opisuje problem.
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
}
}
}
Zasadniczo: gdy użytkownik kliknie gdzieś w oknie gry, współrzędne xiy myszy są pobierane, a obiekt gry przesuwa się w tym miejscu w pewnym okresie czasu.
Cóż ... kod działa, ale jest brzydki, a obiekty nie poruszają się bezpośrednio w kierunku obiektu (zamiast tego jest to ruch ukośny, a następnie ruch jednoosiowy). Domyślam się, że jest kilka funkcji matematycznych, których mogę użyć, ale szczerze mówiąc, nie mam pojęcia, od czego zacząć. Jakieś sugestie?