Поведение самонаводящихся ракет на Яве - PullRequest
2 голосов
/ 26 февраля 2011

Может быть, вопрос новичка, но спасибо за чтение.Я работаю над 2D-игрой Java, в которой у меня есть ракеты, которые отслеживают положение объекта с помощью следующего кода.Я бы хотел, чтобы ракеты прекратили возвращаться в исходное положение, когда они достигнут определенного минимального смещения от цели, после чего они должны упасть прямо вниз.Прямо сейчас поведение самонаведения отключается всякий раз, когда ракета находится в пределах минимального смещения, и включается снова, если смещение увеличивается. Я бы хотел, чтобы поведение отключалось только один раз, оставаясь выключенным до конца срока службы ракеты. Как мне это сделать?

public void home(int targetX, int targetY, int scale){
    int dy = targetY - y;
    int dx = targetX - x;
    double speed, sep;

    sep = Math.sqrt(dx * dx + dy * dy);
    speed = scale/sep;

    if(dy > 50 || dx > 50){
        x += dx * speed;
        y += dy * speed;
    }
    else{
        x += 0;
        y += scale;
    }
}

1 Ответ

6 голосов
/ 26 февраля 2011

Добавить переменную-член, например boolean homing = true. Затем измените свое условие на что-то вроде следующего:

if (dy < 50 && dx < 50)
    homing = false;

if(homing){
    x += dx * speed;
    y += dy * speed;
}
else{
    x += 0;
    y += scale;
}

Вам просто нужно сломать взаимную зависимость между поведением вашей ракеты и ее состоянием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...