Я разрабатываю 2D-игру на языке C, используя Allegro 5, где противник из фиксированной позиции стреляет снарядом в текущую позицию игрока. Я знаю, что мне придется вычислить тангенс воображаемого треугольника на основе позиции игрока и врага. Однако как я могу заставить снаряд двигаться по прямой на основе этого значения?

0
Caio B 1 Ноя 2018 в 19:59

1 ответ

Лучший ответ

Это ситуация, когда легче работать с векторами, чем с углами.

Простая математика вычисляет вектор между противником и игроком:

# Compute the x and y displacement from the enemy to the player
dx = player_x - enemy_x
dy = player_y - enemy_y

# normalize the displacement to get the direction vector 
distance = sqrt(dx * dx + dy * dy)
projectile.dir_x = dx / distance

` ` `

Снаряд просто должен следовать этому вектору во время цикла обновления:

projectile.x += projectile.dir_x * projectile.speed * time_elapsed
projectile.y += projectile.dir_y * projectile.speed * time_elapsed
0
rcorre 5 Ноя 2018 в 01:17