Hitest没有正确注册

时间:2013-04-05 13:50:59

标签: flash actionscript hittest

我有这个角色,如果你按下A按钮它会攻击。我让攻击按钮工作,但我找到了最热门的问题。当玩家攻击它到达它的手臂并击中但是如果手臂触及敌人它没有记录命中,它将仅在角色身体接触敌人时记录命中。我怎样才能实现这一点,以便只有手臂接触然后注册命中。

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

    public class Player extends MovieClip
    {
        // player settings
        var WalkSpeed:Number = 5;
        var RotationSpeed:Number = 8;

        // movement flags
        var MovingUp:Boolean = false;
        var MovingLeft:Boolean = false;
        var MovingRight:Boolean = false;

        //Attack Settings
        var Attack:Boolean = false;
        public var Attacking:Boolean = false;

        public function Player()
        {
            // constructor code
            stage.addEventListener(Event.ENTER_FRAME, Update);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, Move);
            stage.addEventListener(KeyboardEvent.KEY_UP, StopMove);
        }

        function Move(event:KeyboardEvent):void
        {
            switch ( event.keyCode )
            {
                case Keyboard.UP :
                    MovingUp = true;
                    break;

                case Keyboard.LEFT :
                    MovingLeft = true;
                    break;

                case Keyboard.RIGHT :
                    MovingRight = true;
                    break;

                case Keyboard.A :
                    Attack = true;
                    break;
            }
        }

        function Update(event:Event):void
        {

            if (Attacking == false)
            {
                // Rotate right or left
                if (MovingRight)
                {
                    rotation +=  RotationSpeed;
                }
                if (MovingLeft)
                {
                    rotation -=  RotationSpeed;
                }
                if (MovingUp)
                {
                    x = x+Math.cos(rotation/180*Math.PI)*WalkSpeed;
                    y = y+Math.sin(rotation/180*Math.PI)*WalkSpeed;
                }

                if (Attack)
                {
                    Attacking = true;
                    //gotoAndStop('attack');
                }

                //Attacking enemies
                if (Attacking == true)
                {
                    gotoAndStop('attack');
                    MovingRight = false;
                    MovingUp = false;
                    MovingLeft = false;
                    if(this.hitTestObject(MovieClip(root).Bad)){
                       trace ("hit");
                       }
                }

            }

            //Creating Boundaries
            if (this.x > 530)
            {
                this.x = 530;
            }
            if (this.x < 20)
            {
                this.x = 20;
            }
            if (this.y > 380)
            {
                this.y = 380;
            }
            if (this.y < 20)
            {
                this.y = 20;
            }
        }

        function StopMove(event:KeyboardEvent):void
        {
            switch ( event.keyCode )
            {
                case Keyboard.UP :
                    MovingUp = false;
                    break;

                case Keyboard.LEFT :
                    MovingLeft = false;
                    break;

                case Keyboard.RIGHT :
                    MovingRight = false;
                    break;

                case Keyboard.A :
                    Attack = false;
                    break;
            }
        }
    }

}

0 个答案:

没有答案