1

AS3で敵を追いかけたい。

私がこれまでに持っているコードは次のとおりです。

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

そのコードを使用すると、敵はフレームごとに私のキャラクターの上に即座に表示されます。

しかし、私はそれが瞬時になることを望んでいません。敵の動きを1ティックあたり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 に答える