Tôi hiện đang xem xét phát triển trò chơi XNA với ngôn ngữ C #.
Tôi có hai lớp: trình xử lý trò chơi chính và lớp "sprite". Sau đây là một số mã giả cơ bản mà tôi hy vọng mô tả đầy đủ vấn đề.
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
}
}
}
Về cơ bản: khi người dùng nhấp vào đâu đó trong cửa sổ trò chơi, tọa độ x và y của chuột sẽ được lấy và đối tượng trò chơi sẽ di chuyển về phía vị trí đó trong một khoảng thời gian.
Chà ... mã hoạt động, nhưng nó xấu, và các đối tượng không di chuyển trực tiếp về phía đối tượng (thay vào đó, đó là chuyển động chéo, tiếp theo là chuyển động một trục). Tôi đoán có một số hàm toán học tôi có thể sử dụng, nhưng thật lòng tôi không biết phải bắt đầu từ đâu. Bất kỳ đề xuất?