如何让敌人面对玩家

时间:2016-02-02 16:43:41

标签: flash-cs6 flash-cc actionscript-3

我的游戏是一种简单的2D自上而下的设计风格。我已经有了跟随玩家的敌人,但我不知道如何使敌人面对他。我甚至不知道从哪里开始。

这是让我的敌人跟随玩家的代码:

 if ( enemy.x > player.x ){
      enemy.x -= 7;
 }else {
      enemy.x += 7;
 {
 if ( enemy.y > player.y ){
      enemy.y -= 7;
 }else {
      enemy.y += 7;
 {

2 个答案:

答案 0 :(得分:2)

我假设你有一个确定敌方方向的变量。另外,假设您只使用了四个基数方向。

你可以简单地比较一下敌人 x,y 坐标与玩家的比较。

sudo代码:

if enemy x > player x // player is to the left of the enemy
    enemy face left
else if enemy x < player x // player is to the right of the enemy
    enemy face right
else if enemy y > player y // player is below the enemy
    enemy face down
else
    enemy face up

这将使你的敌人几乎总是面向左/右。通过比较敌人 x / y 与玩家 x / y 相比的增量,你可以在完成这项工作后获得更多参与。

类似的东西:

delta x = abs(player x - enemy x)
delta y = abs(player y - enemy y)

if delta x > delta y // Enemy is further away on the x axis than the y axis
    make a choice of facing left/right
else
    make a choice of facing up/down

希望这有助于您开始使用。

答案 1 :(得分:2)

如果您希望敌人完全面向玩家,换句话说是完整的360度,您可以计算enemyplayer之间的角度并使用rotation财产,像这样:

var angle:Number = Math.atan2(player.y - enemy.y, player.x - enemy.x) * (180 / Math.PI);
enemy.rotation = angle;

为了使其看起来正确,您应该使enemy的注册位于其中心,使其围绕其中心旋转,并将其向右拉,使角度0朝右