установка одинаковой скорости
у меня есть java код:
int vx = enemy_pos_x - t_pos_x;
int vy = enemy_pos_y - t_pos_y;
x += vx;
y += vy;
он делает чтобы объект двигался в определённую точку.
x,y-позиция объекта
enemy_pos_x,y-позиция точки б
t_pos_x,y-позиция точки а
Проблема в том, что шарик летит с разной скоростью и прилетает всегда с одним временем полёта, надо установить одинаковую скорость.
этот код находится в таймере
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Кинематика: <положение> = <время> * <скорость>. Вам нужно задать вектор скорости пули (vx, vy). Я буду считать что величина скорости постоянна и хранится в bullet_speed.
Направление на врага:
dx = enemy_pos_x - t_pos_x;
dy = enemy_pos_y - t_pos_y;
Расстояние до врага:
dist = (dx ** 2 + dy ** 2) ** 0.5;
Скорость по направлению к врагу:
vx = bullet_speed * dx / dist;
vy = bullet_speed * dy / dist;
Стартовая точка пули:
x = t_pos_x
y = t_pos_y
В цикле по таймеру находите промежуток времени, умножаете его на скорость, добавляете к координатам пули:
dt = now_t - prev_t;
x += vx * dt;
y += vy * dt;