reviveの作業ログ

サンプル作成

http://onegame.bona.jp/physics2d/2/のサンプルほぼそのままなんだけど、一応作成。


球と地面だけ作成した。気付いた点としては、「線(ImmovableGate)の当たり判定は片方しかない」らしい、ということ。つまり、片方からはぶつかるけど、もう片方からはすり抜ける、ということ。地面として使う場合、Nrm(法線)の方向が重要になりそう。


それはさておき、四角形で動くものが作れないというのは、地味につらいかもしれない。なので、他の物理エンジンも試してみることにする。解説の多さからいくとAPEかな。Box2Dも気になるんだけど。

コード

package
{
	import flash.display.*;
	import de.popforge.revive.application.*;
	import de.popforge.revive.member.*;
	
	public class Main extends Sprite
	{
		private var scene:SceneContainer;

		public function Main() {
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			scene = new TestScene();
			addChild(scene);
		}
	}
}


import de.popforge.revive.application.*;
import de.popforge.revive.member.*;

class TestScene extends SceneContainer
{
	static private const GROUND_W:Number = 200;
	static private const GROUND_Y:Number = 200;

	static private const CIRCLE_X:Number = 0;
	static private const CIRCLE_Y:Number = 0;
	static private const CIRCLE_R:Number = 20;

	public function TestScene() {
		//Ground
		//向きに注意。-0.5〜と0.5を入れ替えるとすり抜ける(=今の状態でも、下からだとすり抜ける)
		simulation.addImmovable(new ImmovableGate(-0.5*GROUND_W, GROUND_Y, 0.5*GROUND_W, GROUND_Y));

		//Circle
		simulation.addMovable(new MovableCircle(CIRCLE_X, CIRCLE_Y, CIRCLE_R));

		//Draw
		drawImmovables();
	}
}