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が良いかもしれない。