我怎样才能让我的玩家在点击鼠标时移动到鼠标(就像在魔兽争霸中一样)?
到目前为止我已经尝试过:
if (Mouse.isButtonDown(0)) {
if (X < Mouse.getX()) {
X += Speed;
}
if (X > Mouse.getX()) {
X -= Speed;
}
if (Y < Mouse.getY()) {
Y += Speed;
}
if (Y > Mouse.getY()) {
Y -= Speed;
}
}
但只有当我按住鼠标时,它才会执行我想要的操作。
最佳答案
只需存储最后一次点击的位置,让玩家朝那个方向移动。
将这些字段添加到您的播放器类:
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;
}
关于java - 单击时让播放器移动到我的鼠标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656616/