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

回転に基づく方向にオブジェクトを移動するには、とが必要cosですsin

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 に答える