0

我不知道下一步该做什么。现在,当我单击时,它会添加子弹并将其旋转到正确的角度,但我不知道如何让它开火。我想让子弹射到鼠标指向的地方。谢谢!PS:对不起,如果代码是混乱的。

package    
{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.events.KeyboardEvent;
    import flash.utils.Timer;
    import flash.text.Font;
    import flash.events.MouseEvent;
    import flash.text.TextDisplayMode;
    import flash.text.TextExtent;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import fl.motion.easing.Back;
    import flash.display.DisplayObject;

    public class GameEnter extends MovieClip
    {

        public var _bullet:bullet;

        public function GameEnter() 
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, shootBullet);
            stage.addEventListener(MouseEvent.MOUSE_UP, removeBullet);
        }

        public function init()
        {
            _bullet = new bullet();
            addChild(_bullet);

            _bullet.x = stage.stageWidth / 2;
            _bullet.y = stage.stageHeight / 2;

            addEventListener(Event.ENTER_FRAME, onEnter);
        }

        public function onEnter(event:Event)
        {
            var dx:Number = mouseX - _bullet.x;
            var dy:Number = mouseY - _bullet.y;
            var angle:Number = Math.atan2(dy,dx) * 180 / Math.PI;

            _bullet.rotation = angle;
        }

        public function shootBullet(event:MouseEvent)
        {
            init();
        }

        public function removeBullet(event:MouseEvent)
        {
            removeChild(_bullet);
        }

    }

}
4

1 回答 1

2

要在基于旋转的方向上移动对象,您需要cossin

Math.cos()并且Math.sin()只接受弧度,因此您需要将旋转转换为弧度,就像您Math.atan2()在示例中所做的那样。

样本:

// Note: Utilising the property 'angle' from your code.
_bullet.x += Math.cos(angle);
_bullet.y += Math.sin(angle);

然后显然将这些值乘以一个值,该值将代表您希望子弹移动的速度,例如:

var velocity:Number = 10.5;

_bullet.x += Math.cos(angle) * velocity;
_bullet.y += Math.sin(angle) * velocity;
于 2012-05-24T00:29:43.400 回答