0

そうですね、このゲームを実装しようとしているのですが、

4

2 に答える 2

1

そのゲームは本当に単純な物理学を使用しています。基本的にvelocityは、マウスを押したままプロパティから値を減算するか、それ以外の場合は値を加算します。

yヘリコプターのは(0を下回るとvelocity一度上昇します)によって増加します。velocityこれはまた、あなたが見る段階的なスピードアップ/スローダウン効果を引き起こします。


サンプルコード:

Game.as(これはドキュメントクラスになります)。

package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    
    public class Game extends MovieClip
    {
        
        // Properties.
        private var _updating:Array = [];
        private var _mouseDown:Boolean = false;
        
        // Objects.
        private var _helicopter:Helicopter;
        
        
        /**
         * Constructor.
         */
        public function Game()
        {
            // Listeners.
            stage.addEventListener(Event.ENTER_FRAME, _update);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, _mouseAction);
            stage.addEventListener(MouseEvent.MOUSE_UP, _mouseAction);
            
            
            // Helicopter.
            _helicopter = new Helicopter();
            stage.addChild(_helicopter);
        }
        
        
        /**
         * Mouse action manager.
         * @param e MouseEvent instance.
         */
        private function _mouseAction(e:MouseEvent):void
        {
            switch(e.type)
            {
                default: _mouseDown = false; break;
                case MouseEvent.MOUSE_DOWN: _mouseDown = true; break;
            }
        }
        
        
        /**
         * Update the game.
         * @param e Event instance.
         */
        private function _update(e:Event):void
        {
            _helicopter.update(_mouseDown);
        }
        
    }
}

Helicopter.as

package
{
    import flash.display.Sprite;
    
    public class Helicopter extends Sprite
    {
        
        // Properties.
        private var _velocity:Number = 0;
        
        
        /**
         * Constructor.
         */
        public function Helicopter()
        {
            // Temp graphics.
            graphics.beginFill(0x00FF00);
            graphics.drawRect(0, 0, 60, 35);
            graphics.endFill();
        }
        
        
        /**
         * Update the helicopter.
         * @param mouseDown Boolean representing whether the mouse is held down or not.
         */
        public function update(mouseDown:Boolean):void
        {
            if(mouseDown) _velocity -= 1;
            else _velocity += 1;
            
            y += _velocity;
        }
        
    }
}
于 2012-04-04T22:46:02.327 に答える
0

そのゲームをプレイした覚えがあるので、実装されているモーションの種類を理解していると思います。これを自分で実装する方法の簡単なアイデアを次に示します。

必要なのは物理学の簡単な公式 , この簡単な公式は次のとおりです.

v = u+at;

右。これは、v = 最終速度 u = 初期速度 a = 加速度 t = 時間の式です。

ここでは時間があなたのすべてのステップです。各ステップで移動した距離は、次を使用して計算できます。

s = u*t+ (0.5 * a*t*t);

s = タイム ステップでの移動距離 u = 初期速度 t = 時間。a =加速度(あなたの場合、これは重力のいずれかになります-マウスを離れると有効になります。)

マウスがダウンしている場合、たとえば 20 フレーム以上マウスがダウンしている場合、入力フレームごとに表示されます。

マウスを離すと、同じロジックが適用されます。20 フレーム (または定義した時間減衰) の後、加速度は 1 単位ずつ下がり始めます。

参照: http://en.wikipedia.org/wiki/Equations_of_motion

于 2012-04-05T09:26:41.090 に答える