Создание траектории снаряда в Аллегро - PullRequest
0 голосов
/ 01 ноября 2018

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

1 Ответ

0 голосов
/ 05 ноября 2018

В такой ситуации легче работать с векторами, чем с углами.

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

# 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
...