0

迷路ゲームでは、キャラクターの動きに加速を加えようとしています。キャラクターは壁を通り抜けてはいけないので、移動機能とヒットテストは同じ機能になります。

この関数のifステートメントにアクセラレーションを追加しようとしましたが、正しく機能しません。誰かが加速コードをどこに置くべきか、そしてなぜそこにあるのか教えてもらえますか?

これは私がそれが行われたと思った方法ですが、機能しません:

    function walkingX(anEvent: Event): void
    {


      var newx: Number = mc.x - (isLeft ? xspeed : 0) + (isRight ? xspeed : 0);
      var newy: Number = mc.y - (isUp ? yspeed : 0) + (isDown ? yspeed : 0);

      if(!boundsBmpData.hitTest(new Point(bounds.x, bounds.y),
                                255,
                                mcBmpData,
                                new Point(newx, newy),
                                255))
      {
         mc.x = newx;
         mc.y = newy;
      }

if(isDown==true && yspeed<maxspeed){yspeed+=2}
if(isUp==true && yspeed>-maxspeed){yspeed-=2}
if(yspeed>0){yspeed-=accel}
if(yspeed<0){yspeed+=accel}

if(isRight==true && xspeed<maxspeed){xspeed+=2}
if(isLeft==true && xspeed>-maxspeed){xspeed-=2}
if(xspeed>0){xspeed-=accel}
if(xspeed<0){xspeed+=accel}

    }
4

1 に答える 1

1

これらの行を削除する必要があると思います。

if(yspeed>0){yspeed-=accel}
if(yspeed<0){yspeed+=accel}
...
...
...
if(xspeed>0){xspeed-=accel}
if(xspeed<0){xspeed+=accel}

それがその上の論理から差し引かれる理由。

加速に関しては、おそらく速度値を「2」の定数でインクリメントしたくないでしょう。私はそれを上で宣言された変数または静的に入れます(したがって、使用されているすべての場所ではなく、1つの場所で変更できます。

最後に、その「加速」効果を得るには、分数を掛けて速度を上げる必要があります。

このような:

if(isDown==true && yspeed<maxspeed){yspeed *= 1.05}

または静的定数を使用

public static const MOVEMENT_SPEED:int = 1.05;
...
...
...
if(isDown==true && yspeed<maxspeed){yspeed *= MOVEMENT_SPEED}
于 2011-12-18T15:02:14.410 に答える