0

switch ステートメントを使用して簡単な衝突検出を行おうとしています。このステートメントは、特定のオブジェクトの y 位置を取得し、オブジェクトの x が別のオブジェクトと同じかどうかを検出します。問題は、条件が満たされていない場合でも、if ステートメント全体を通過するケース内に if ステートメントがあることです。オブジェクトは、敵に攻撃された後 (敵が画面内を移動している)、開始点に送り返され、ケースが満たされるように 19 ずつ移動することになっています。問題は、ケース (y = 221) を満たすたびに開始位置に送り返され続けるため、上に移動できないように見えることです。switch ステートメントから deadObject() を削除すると、問題なく動作し、敵に遭遇したときにのみ「dead」と出力されます。どうすればこれを修正できますか?

これについてインターネットで調べてみましたが、switch ステートメントの if ステートメントに関連する AS3 は見つかりません。助けてくれてありがとう

public function enterFrame(me:Event)
    {
        position = objectA.y
        switch(position)
        {
            case 221:
                if (objectA.x == enemy1.x || objectA.x == enemy1.x + 10)
                    trace("dead1");
                    deadObject()
                if (objectA.x == enemy2.x || objectA.x == enemy2.x + 10)
                    trace("dead1");
                    deadObject()
                if (objectA.x == enemy3.x || objectA.x == enemy3.x + 10)
                    trace("dead1");
                    deadObject()
                break;
          }
     }

public function deadObject()
    {
        objectA.x = 133;
        objectA = 240;
    }
4

1 に答える 1