只需存儲最後一次點擊的位置並讓玩家在該方向上移動即可。
添加這些字段,以您的播放器類:
int targetX;
int targetY;
在您的更新方法存儲新的目標和適用的運動:
// A new target is selected
if (Mouse.isButtonDown(0)) {
targetX = Mouse.getX();
targetY = Mouse.getY();
}
// Player is not standing on the target
if (targetX != X || targetY != Y) {
// Get the vector between the player and the target
int pathX = targetX - X;
int pathY = targetY - Y;
// Calculate the unit vector of the path
double distance = Math.sqrt(pathX * pathX + pathY * pathY);
double directionX = pathX/distance;
double directionY = pathY/distance;
// Calculate the actual walk amount
double movementX = directionX * speed;
double movementY = directionY * speed;
// Move the player
X = (int)movementX;
Y = (int)movementY;
}
僅供參考,您可能希望谷歌「的遊戲引擎」。這些天沒有人從頭開始寫遊戲。 – gerrytan
您可能還想將其移入gamedev stackexchange。 –
@gerrytan如果這是真的,那麼如何解釋SO *上的4000多個XNA問題*?從零開始構建小型遊戲沒有什麼可說的。對於較小的項目,遊戲引擎通常是完全過度的。 – Lucius