如何制造子弹?

时间:2012-05-23 23:44:05

标签: actionscript-3 actionscript

我不知道接下来该做什么。 现在,当我点击时,它会添加子弹并将其旋转到正确的角度,但我不知道如何使其发射。我希望将子弹射到鼠标指向的位置。谢谢! 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);
        }

    }

}

1 个答案:

答案 0 :(得分: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;