在 Allegro 中创建射弹轨迹

Creating a projectile trajectory in Allegro

我正在使用 Allegro 5 在 C 语言中开发一个 2D 游戏,在这个游戏中,来自固定位置的敌人向玩家的当前位置发射弹丸。我知道我必须根据玩家的位置和敌人的位置来计算假想三角形的切线。但是,如何让弹丸根据该值沿着直线运动?

在这种情况下,使用矢量比使用角度更容易。

一些简单的数学计算敌人和玩家之间的向量:

# 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