APEの作業ログ

サンプル

単純に、地面と球のみのサンプルを作成。インタラクティブはなし。

コード

package {
	import org.cove.ape.*;
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;

	public class Main extends Sprite {

		static public const GROUND_W:Number = 200;
		static public const GROUND_Y:Number = 300;

		static public const PLAYER_X:Number = 100;
		static public const PLAYER_Y:Number = 0;
		static public const PLAYER_R:Number = 20;

		public function Main() {
			{//Init Common
				stage.frameRate = 55;

				addEventListener(Event.ENTER_FRAME, run);
			}

			{//Init APE
				APEngine.init(1/4);
				
				APEngine.container = this;
				
				//重力
				APEngine.addMasslessForce(new Vector(0, 3));
				
				//オブジェクト

				//地面
				var ground:Group = new Group();
				{
					var floor:RectangleParticle = new RectangleParticle(0.5*GROUND_W, GROUND_Y, GROUND_W, 50, 0,true);
					floor.setStyle(0, 0x444444, 1, 0x444444);
					ground.addParticle(floor);
				}
				APEngine.addGroup(ground);

				//球
				var player:Group = new Group();
				{
					var circle:CircleParticle = new CircleParticle(PLAYER_X, PLAYER_Y, PLAYER_R);
					circle.setStyle(0, 0x000088, 1, 0x000088);
					player.addParticle(circle);
				}
				APEngine.addGroup(player);

				//何が何とぶつかるかの設定
				player.addCollidableList(new Array(ground));//球が地面にぶつかるようにする
			}
		}

		//毎フレーム呼ばれる
		private function run(evt:Event):void {
			APEngine.step();
			APEngine.paint();
		}
	}
}

メモ

さらに他の物理エンジンとして、KYUCON*BLOG: Flash物理エンジンに挙げられているものがあった。さすがに全部チェックするのはしんどい。


あと、box2dのサンプルはhttp://cs3book.flashoop.jp/wiki/index.php?%E7%89%A9%E7%90%86%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B2%E3%83%BC%E3%83%A0が良いかもしれない。