我想在 AS3 中让敌人跟随我的角色。
我到目前为止的代码是:
enemy1.x = (enemy1.x + (character.x - enemy1.x));
enemy1.y = (enemy1.y + (character.y - enemy1.y));
使用该代码,敌人每帧都会立即出现在我的角色之上。
不过,我不希望它是即时的。我希望敌人的移动具有最大值,例如每刻 2。
我知道您可以为随机值设置最小值和最大值,但是对于这样的事情呢?
我想在 AS3 中让敌人跟随我的角色。
我到目前为止的代码是:
enemy1.x = (enemy1.x + (character.x - enemy1.x));
enemy1.y = (enemy1.y + (character.y - enemy1.y));
使用该代码,敌人每帧都会立即出现在我的角色之上。
不过,我不希望它是即时的。我希望敌人的移动具有最大值,例如每刻 2。
我知道您可以为随机值设置最小值和最大值,但是对于这样的事情呢?
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,具体取决于当前方向。
如果运动的计算值太大,那么你需要限制它:
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 重复使用