0

プレイヤーが野球のバットを持っていて、ボタンをクリックするとバットを振るゲームを作成しています。バットを振って敵に当てると、敵はゴルフボールのように打った方向とは逆方向に飛んでいきます。移動と攻撃の機能を実行しましたが、ヒットテストを登録して、敵に向かっているときに敵にヒットし、敵が戻ってくるようにするにはどうすればよいですか。これは私がこれまで行ったことです:

package 
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.events.MouseEvent;
    import flash.ui.Keyboard;

    public class Player extends MovieClip
    {
        var walkSpeed:Number = 4;
        var walkRight:Boolean = false;
        var walkLeft:Boolean = false;
        var walkUp:Boolean = false;
        var walkDown:Boolean = false;
        var attacking:Boolean = false;

        public function Player()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN , walk);
            addEventListener(Event.ENTER_FRAME, Update);
            stage.addEventListener(KeyboardEvent.KEY_UP, stopWalk);
            stage.addEventListener(MouseEvent.CLICK, attack);
        }

        function walk(event:KeyboardEvent)
        {

            if (event.keyCode == 68)
            {
                walkRight = true;
            }
            if (event.keyCode == 87)
            {
                walkUp = true;
            }
            if (event.keyCode == 65)
            {
                walkLeft = true;
            }
            if (event.keyCode == 83)
            {
                walkDown = true;
            }
        }

        function Update(event:Event)
        {
            if (attacking == true)
            {
                walkRight = false;
                walkLeft = false;
                walkUp = false;
                walkDown = false;
            }
            else if (attacking == false)
            {
                var dx = parent.mouseX - x;
                var dy = parent.mouseY - y;
                var angle = Math.atan2(dy,dx) / Math.PI * 180;
                rotation = angle;

                if (walkRight == true)
                {
                    x +=  walkSpeed;
                    gotoAndStop('walk');
                }
                if (walkUp == true)
                {
                    y -=  walkSpeed;
                    gotoAndStop('walk');
                }
                if (walkLeft == true)
                {
                    x -=  walkSpeed;
                    gotoAndStop('walk');
                }
                if (walkDown == true)
                {
                    y +=  walkSpeed;
                    gotoAndStop('walk');
                }
            }


        }

        function stopWalk(event:KeyboardEvent)
        {
            if (attacking == false)
            {
                if (event.keyCode == 68)
                {
                    event.keyCode = 0;
                    walkRight = false;
                    gotoAndStop('stance');
                }
                if (event.keyCode == 87)
                {
                    event.keyCode = 0;
                    walkUp = false;
                    gotoAndStop('stance');
                }
                if (event.keyCode == 65)
                {
                    event.keyCode = 0;
                    walkLeft = false;
                    gotoAndStop('stance');
                }
                if (event.keyCode == 83)
                {
                    event.keyCode = 0;
                    walkDown = false;
                    gotoAndStop('stance');
                }
            }
        }

        function attack(event:MouseEvent)
        {
            if (attacking == false)
            {
                attacking = true;
                gotoAndStop('attack');
            }
        }
    }
}
4

1 に答える 1

0

キャラクターの方向が変わったら、現在向いている方向に応じて変数を変更します。direction = 下を向いているときは 0、右を向いているときは 1 など。これと敵の位置を使用して、敵がヒットしたかどうかを計算します。敵を後ろに飛ばすには、キャラクターの方向を取得して、どちらに飛んでいくかを計算します。説明に役立つサンプルコードをいくつか示しますが、私はタブレットを使用しています。

于 2013-04-05T00:17:27.447 に答える