Зараз я розглядаю розробку ігор XNA з мовою C #.
У мене два класи: основний обробник гри та клас "спрайт". Далі йде декілька основних псевдокодів, які, я сподіваюся, адекватно описують проблему.
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
}
}
}
В основному: коли користувач натискає десь у вікні гри, приймаються координати миші x і y, і ігровий об’єкт протягом певного періоду часу рухатиметься до цього місця.
Ну ... код працює, але він некрасивий, і об'єкти не рухаються безпосередньо до об'єкта (натомість це діагональний рух, за яким рухається одновісний рух). Я здогадуюсь, що я можу використовувати деякі математичні функції, але я, чесно кажучи, не знаю, з чого почати. Будь-які пропозиції?