在Allegro中创建弹丸轨迹

时间:2018-11-01 16:59:49

标签: c allegro allegro5

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

1 个答案:

答案 0 :(得分:0)

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

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

# 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