Спрайт в игре хочет идти к заданной координатной паре (x, y)
, но может перемещать только walkSpeed
пикселей за галочку.Математически проверяя, является ли число положительным, отрицательным или 0
Чтобы выяснить, как далеко их перемещать, я только что получил блок из if
утверждений.
public void walkToward(Integer x, Integer y) {
int walkSpeed = 1;
int dX = x - getxPos();
int dY = y - getyPos();
int moveX, moveY;
if (dX > 0) {
moveX = walkSpeed;
} else if (dX < 0) {
moveX = -walkSpeed;
} else {
moveX = 0;
}
if (dY > 0) {
moveY = walkSpeed;
} else if (dY < 0) {
moveY = -walkSpeed;
} else {
moveY = 0;
}
{code to move player ...}
}
Это не проблема, но я чувствую, что для этого будет более математический способ. Что-то формы
int moveX = {some operation} * walkSpeed;
Где {some operation}
превращает все положительные числа 1, все отрицательные числа на -1 и 0 0.
Там в Math.signum, но он принимает двойной и возвращает двойной. – Eran
Посмотрите на 'Math.signum' –
Так что-то вроде' moveX = (int) Math.signum ((float) dX) '? – Gricey