2012-11-02 67 views
1

我想讓敵人在AS3中跟隨我的角色。Actionscript 3中的最大值?

我到目前爲止的代碼是:

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

與該代碼,敵人瞬間出現在我的性格每一幀的頂部。

雖然我不希望它是即時的。我希望敵人的運動具有最大價值,比如每剔2點。

我知道你可以對隨機值做一個最小值和最大值,但是對於這樣的事情呢?

+0

如果你劃分的距離它基本上是「插值」。所以像enemy1.x =(enemy1.x +(character.x - enemy1.x)/ 4);會使敵人在每次通話中移動敵人和角色之間距離的四分之一(將會像對數方法一樣,在距離較近時距離較遠的地方會更快),儘管您需要說距離很小足夠的話,如果你想要線速度,你可以做一些事情,比如使用atan然後沿線移動一些設定距離來計算兩點之間的角度(y = mx + b) – shaunhusain

回答

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。

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的