1

我想在 AS3 中让敌人跟随我的角色。

我到目前为止的代码是:

enemy1.x = (enemy1.x + (character.x - enemy1.x));
enemy1.y = (enemy1.y + (character.y - enemy1.y));

使用该代码,敌人每帧都会立即出现在我的角色之上。

不过,我不希望它是即时的。我希望敌人的移动具有最大值,例如每刻 2。

我知道您可以为随机值设置最小值和最大值,但是对于这样的事情呢?

4

2 回答 2

1
enemy1.x += getMovementValue(2, character.x - enemy1.x);
enemy1.y += getMovementValue(2, character.y - enemy1.y);

function getMovementValue(maxMovement:Number, d:Number):Number{
    if(d == 0) return 0;
    return (Math.min(2, Math.abs(d))) * (d / Math.abs(d));
}

您只需将最大允许距离与实际行驶距离的绝对值之间的最小值乘以 1 或 -1,具体取决于当前方向。

于 2012-11-03T08:21:07.707 回答
0

如果运动的计算值太大,那么你需要限制它:

max_x = 2

x = (enemy1.x + (character.x - enemy1.x));
if abs(x) > max_x
    if x >0
        enemy.x = max_x
    else
        enemy.x = max_x * -1
else
    enemy.x = x

使其成为一个函数并为 y 重复使用

于 2012-11-02T22:04:34.227 回答