ฉันกำลังดูการพัฒนาเกม 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 ของเมาส์จะถูกนำมาและวัตถุของเกมจะย้ายไปยังตำแหน่งนั้นในช่วงระยะเวลาหนึ่ง
ดี ... รหัสใช้งานได้ แต่มันน่าเกลียดและวัตถุไม่ได้เคลื่อนไปที่วัตถุโดยตรง (แทนมันคือการเคลื่อนไหวในแนวทแยงมุมตามด้วยการเคลื่อนที่แบบแกนเดียว) ฉันเดาว่ามีฟังก์ชั่นทางคณิตศาสตร์บางอย่างที่ฉันสามารถใช้ได้ แต่ฉันก็ยังไม่รู้เลยว่าจะเริ่มต้นอย่างไร ข้อเสนอแนะใด ๆ