我想让一个敌人在AS3中跟随我的角色。
我到目前为止的代码是:
enemy1.x = (enemy1.x + (character.x - enemy1.x));
enemy1.y = (enemy1.y + (character.y - enemy1.y));
使用该代码,敌人每帧都会立即出现在我的角色之上。
但是,我不希望它是即时的。我希望敌人的运动具有最大值,例如每蜱2个。我知道您可以为随机值设置最小值和最大值,但是对于类似的内容呢?
答案 0 :(得分: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,具体取决于当前方向。
答案 1 :(得分: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