そうですね、このゲームを実装しようとしているのですが、
2 に答える
そのゲームは本当に単純な物理学を使用しています。基本的に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;
}
}
}
そのゲームをプレイした覚えがあるので、実装されているモーションの種類を理解していると思います。これを自分で実装する方法の簡単なアイデアを次に示します。
必要なのは物理学の簡単な公式 , この簡単な公式は次のとおりです.
v = u+at;
右。これは、v = 最終速度 u = 初期速度 a = 加速度 t = 時間の式です。
ここでは時間があなたのすべてのステップです。各ステップで移動した距離は、次を使用して計算できます。
s = u*t+ (0.5 * a*t*t);
s = タイム ステップでの移動距離 u = 初期速度 t = 時間。a =加速度(あなたの場合、これは重力のいずれかになります-マウスを離れると有効になります。)
マウスがダウンしている場合、たとえば 20 フレーム以上マウスがダウンしている場合、入力フレームごとに表示されます。
マウスを離すと、同じロジックが適用されます。20 フレーム (または定義した時間減衰) の後、加速度は 1 単位ずつ下がり始めます。