<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ADD CHILD = AS3 &#187; Box2D</title>
	<atom:link href="http://www.addchild.net/tag/box2d/feed" rel="self" type="application/rss+xml" />
	<link>http://www.addchild.net</link>
	<description>初心者がFlsah ActionScript 3.0を勉強して行く軌跡です。</description>
	<lastBuildDate>Tue, 09 Feb 2010 04:10:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Box2DFlashAS3を使ってマウス操作する[Box2D-2]</title>
		<link>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html</link>
		<comments>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 04:10:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=411</guid>
		<description><![CDATA[Box2DFlashAS3（ver2.0.2）で物体をマウス操作する

Box2DFlashAS3 を使ってみる[Box2D-1]ではBox2Dの物理エンジンを体験しましたが、今回は落下物を掴む動きを追加したいと思います [...]]]></description>
			<content:encoded><![CDATA[<h3>Box2DFlashAS3（ver2.0.2）で物体をマウス操作する</h3>
<p>
Box2DFlashAS3 を使ってみる[Box2D-1]ではBox2Dの物理エンジンを体験しましたが、今回は落下物を掴む動きを追加したいと思います。<br />
ちょっと訳がわからくなって気がちですが、自分の作業メモ的に説明していきます。
</p>
<p>
Box2Dにはマウス処理をするにあたりマウスジョイントと言うプログラムが初めから使えるようになっています。<br />
マウスジョイントとは物体とマウスをジョイント（付ける）処理と考えると分かりやすいかもしれません･･･<br />
Box2DFlashAS3 を使ってみる[Box2D-1]をベースにまずはマウスジョントを宣言します。
</p>
<pre class="brush: jscript; auto-links: false;">
private var mouseJointDef:b2MouseJointDef; // マウスジョイントの定義
private var mouseJoint:b2MouseJoint; // マウスジョイント
</pre>
<p>
あとインポートにマウスイベントを指定も忘れずにお願いします。
</p>
<p><span id="more-411"></span></p>
<p>
次にマウス操作のイベントリスナーとそのメソッドを追加します。
</p>
<pre class="brush: jscript; auto-links: false;">
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
</pre>
<p>
マウスが押された時
</p>
<pre class="brush: jscript; auto-links: false;">
private function mouseDownHandler(event:MouseEvent):void {
	var body : b2Body = GetBodyAtMouse(event.stageX, event.stageY);
	if (body) {
		var md : b2MouseJointDef = new b2MouseJointDef();
		md.body1 = world.m_groundBody;
		md.body2 = body;
		md.target.Set(event.stageX / SCALE, event.stageY / SCALE);
		md.maxForce = 500.0 * body.m_mass;
		md.timeStep = 1 / 24;
		mouseJoint = world.CreateJoint(md) as b2MouseJoint;
		body.WakeUp();
	}
}
</pre>
<p>
ここで重要になるのが、GetBodyAtMouseです。<br />
マウスダウンした時に該当する物体があるかを判定していますが詳しく説明ができないので、もっと理解してからと言うことでお願いします。
</p>
<pre class="brush: jscript; auto-links: false;">
//該当オブジェクトがあるかの判定
private function GetBodyAtMouse(stageX : Number, stageY : Number) : b2Body {
	// Make a small box.
	var mousePVec : b2Vec2 = new b2Vec2();
	var mouseXWorldPhys : Number = stageX / SCALE;
	var mouseYWorldPhys : Number = stageY / SCALE;

	mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys);
	var aabb : b2AABB = new b2AABB();
	aabb.lowerBound.Set(mouseXWorldPhys - 0.001, mouseYWorldPhys - 0.001);
	aabb.upperBound.Set(mouseXWorldPhys + 0.001, mouseYWorldPhys + 0.001);

	// Query the world for overlapping shapes.
	var k_maxCount : int = 10;
	var shapes : Array = new Array();
	var count : int = world.Query(aabb, shapes, k_maxCount);
	var body : b2Body = null;
	for (var i : int = 0;i &lt; count; ++i) {
		if (shapes[i].m_body.IsStatic() == false) {
			var tShape : b2Shape = shapes[i] as b2Shape;
			var inside : Boolean = tShape.TestPoint(tShape.m_body.GetXForm(), mousePVec);
			if (inside) {
				body = tShape.m_body;
				break;
			}
		}
	}
}
</pre>
<p>
あとはマウスを動かした時とマウスを離した時の処理を追加するだけです。
</p>
<pre class="brush: jscript; auto-links: false;">
//mouseUphandler
private function mouseUpHandler(event:MouseEvent):void {
	if(mouseJoint){
		world.DestroyJoint(mouseJoint);
		mouseJoint = null;
	}
}
//mouseMoveHandler
private function mouseMoveHandler(event:MouseEvent):void {
	if (mouseJoint) {
		var p2 : b2Vec2 = new b2Vec2(event.stageX / SCALE, event.stageY / SCALE);
		mouseJoint.SetTarget(p2);
	}
}
</pre>
<p>
マウス操作を追加しただけですが、何か色々とイメージが膨らみ遊び心を感じると思います。<br />
こうやって物理エンジンBox2Dを体験して、ちょこっとプログラムを追加しすだけで遊び心がわきますね！<br />
どんどんプログラムを追加して自分なりに色々と遊びたいと思います。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	//インポート
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.*;
	import Box2D.Dynamics.Joints.*;
	import General.*;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;

	/**************************
	 * ADD CHILD = AS3
	 * http://www.addchild.net/
	 * Tatsuya Nishino
	***************************/
	//コンスラクタ
	public class Box2D2 extends Sprite {
		//インスタンスプロパティー
		private const SCALE:Number = 100; // 物理エンジン内の1mを表すためのピクセル数
		private var world:b2World; // 物理エンジンの管理クラス
		private var body:b2Body; // 本体
		private var mouseJointDef:b2MouseJointDef; // マウスジョイントの定義
		private var mouseJoint:b2MouseJoint; // マウスジョイント

		// メソッド
		public function Box2D2() {
			// 初期化
			init();
			createObject();

			// 毎フレームの処理
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
		}
		// init
		private function init():void {
			/*************************
			 *物理エンジンのセットアップ
			**************************/
			//外枠の定義
			var worldAABB:b2AABB = new b2AABB();
			worldAABB.lowerBound.Set(-100, -100);
			worldAABB.upperBound.Set(100, 100);

			//重力の定義
			var gravity:b2Vec2 = new b2Vec2(0, 10);

			//エンジンのセットアップ
			world = new b2World(worldAABB, gravity, true);

			/*************************
			 *床を作る
			**************************/
			//物体の定義
			var floorBodyDef:b2BodyDef = new b2BodyDef();
			floorBodyDef.position.Set(2.5, 3); // 床の位置
			floorBodyDef.angle = Math.PI / 24; //角度を指定

			//物体の形の定義
			var floorShapeDef:b2PolygonDef = new b2PolygonDef();
			floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
			floorShapeDef.friction = 0.3;
			floorShapeDef.density = 0;

			//物体を作る
			var floor:b2Body = world.CreateBody(floorBodyDef);
			floor.CreateShape(floorShapeDef);
			/*************************
			 *DebugDraw を有効にする
			**************************/
			var m_sprite:Sprite = new Sprite();
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			debugDraw.m_sprite = m_sprite;
			debugDraw.m_drawScale = SCALE;
			debugDraw.m_fillAlpha = 0.5;
			debugDraw.m_lineThickness = 1;
			debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit;
			world.SetDebugDraw(debugDraw);
			addChild(m_sprite);
		}
		private function createObject():void {
			/*************************
			 *落下物のセットアップ
			**************************/
			for (var i:uint = 0; i &lt; 20; i++) {
				// 物体の定義を作る (x 座標と角度はランダム)
				var bodyDef:b2BodyDef = new b2BodyDef();
				bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
				bodyDef.angle = Math.PI / 2 * Math.random();

				// 物体を作る
				body = world.CreateBody(bodyDef);

				// 形の定義を作る
				var bodyShape:b2CircleDef = new b2CircleDef();
				bodyShape.radius = Math.random()*0.3+0.05;
				bodyShape.density = 0.5;
				bodyShape.friction = 1;
				bodyShape.restitution = 0.3;

				// 形を物体に追加する
				body.CreateShape(bodyShape);

				// 重さ・重心を計算する
				body.SetMassFromShapes();
			}
		}
		//mouseDownHandler
		private function mouseDownHandler(event:MouseEvent):void {
			var body : b2Body = GetBodyAtMouse(event.stageX, event.stageY);
			if (body) {
				var md : b2MouseJointDef = new b2MouseJointDef();
				md.body1 = world.m_groundBody;
				md.body2 = body;
				md.target.Set(event.stageX / SCALE, event.stageY / SCALE);
				md.maxForce = 500.0 * body.m_mass;
				md.timeStep = 1 / 24;
				mouseJoint = world.CreateJoint(md) as b2MouseJoint;
				body.WakeUp();
			}
		}
		//該当オブジェクトがあるかの判定
		private function GetBodyAtMouse(stageX : Number, stageY : Number) : b2Body {
			// Make a small box.
			var mousePVec : b2Vec2 = new b2Vec2();
			var mouseXWorldPhys : Number = stageX / SCALE;
			var mouseYWorldPhys : Number = stageY / SCALE;

			mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys);
			var aabb : b2AABB = new b2AABB();
			aabb.lowerBound.Set(mouseXWorldPhys - 0.001, mouseYWorldPhys - 0.001);
			aabb.upperBound.Set(mouseXWorldPhys + 0.001, mouseYWorldPhys + 0.001);

			// Query the world for overlapping shapes.
			var k_maxCount : int = 10;
			var shapes : Array = new Array();
			var count : int = world.Query(aabb, shapes, k_maxCount);
			var body : b2Body = null;
			for (var i : int = 0;i &lt; count; ++i) {
				if (shapes[i].m_body.IsStatic() == false) {
					var tShape : b2Shape = shapes[i] as b2Shape;
					var inside : Boolean = tShape.TestPoint(tShape.m_body.GetXForm(), mousePVec);
					if (inside) {
						body = tShape.m_body;
						break;
					}
				}
			}
			return body;
		}
		//mouseUphandler
		private function mouseUpHandler(event:MouseEvent):void {
			if(mouseJoint){
				world.DestroyJoint(mouseJoint);
				mouseJoint = null;
			}
		}
		//mouseMoveHandler
		private function mouseMoveHandler(event:MouseEvent):void {
			if (mouseJoint) {
				var p2 : b2Vec2 = new b2Vec2(event.stageX / SCALE, event.stageY / SCALE);
				mouseJoint.SetTarget(p2);
			}
		}
		//enterFrameHandler
		private function enterFrameHandler(event:Event):void {
			world.Step(1 / 24, 10);
		}
	}
}
</pre>
<div id="flash">
Box2DFlashAS3（ver2.0.2）で物体をマウス操作する
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/middle/Box2D-2.swf", "flash", "550", "400", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/358.html" title="FlashDevelopの便利ショートカット (2009年12月24日)">FlashDevelopの便利ショートカット</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/331.html" title="FlashDevelopのインストールと初期設定 (2009年11月10日)">FlashDevelopのインストールと初期設定</a> (2)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-middle/box2d-as3-middle/411.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Box2DFlashAS3を使ってみる[Box2D-1]</title>
		<link>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html</link>
		<comments>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html#comments</comments>
		<pubDate>Tue, 19 Jan 2010 04:08:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Box2D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FlashDevelop]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=407</guid>
		<description><![CDATA[Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する

複雑な物理計算を処理してくれるライブラリーとして注目を浴びているのが、Box2DFlashAS3です。
とても便利なライブラリーでFlash [...]]]></description>
			<content:encoded><![CDATA[<h3>Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する</h3>
<p>
複雑な物理計算を処理してくれるライブラリーとして注目を浴びているのが、Box2DFlashAS3です。<br />
とても便利なライブラリーでFlash、ActionScriptの世界を楽しくさせてくれますが、その反面Box2Dを使いこなすまでには、一筋縄ではいかなく中々難しいのが現状です。<br />
しかし覚えて損はしないライブラリーなのは間違いないので、理解するよりまずは使っていくことにしました。
</p>
<p>
まずはBox2Dのライブラリーをダウンロードしてきて、解凍したフォルダ内のBox2Dフォルダ、Generalフォルダ、TestBedフォルダ（要らないかも）をflaファイルまたはasファイルと同じ階層に置き、アクションスクリプトにインポートさせます。<br />
その前にBox2Dを体験したい場合は解凍したフォルダ内のHelloWorld.swf、PhysTest.swfなどを開くと体験することができます。
</p>
<pre class="brush: jscript; auto-links: false;">
//インポート
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Joints.*;
import General.*;
</pre>
<p>
ここからはザクっとBox2Dを使うための簡単な説明を。。。<br />
Flashの中にBox2Dと言う世界を作ります。<br />
地面、左右の壁、天井などを設定することにより、世界を大きさ、サイズを決めることができます。<br />
またその中に物体を作ることにより、重力、反発、摩擦などが発生します。
</p>
<p><span id="more-407"></span></p>
<p>
Box2Dの世界をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
//外枠の定義
var worldAABB:b2AABB = new b2AABB();
worldAABB.lowerBound.Set(-100, -100);
worldAABB.upperBound.Set(100, 100);
//重力の定義
var gravity:b2Vec2 = new b2Vec2(0, 10);
//エンジンのセットアップ
world = new b2World(worldAABB, gravity, true);
</pre>
<p>
地面をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
//物体の定義
var floorBodyDef:b2BodyDef = new b2BodyDef();
floorBodyDef.position.Set(2.5, 3); // 床の位置
floorBodyDef.angle = Math.PI / 24; //角度を指定
//物体の形の定義
var floorShapeDef:b2PolygonDef = new b2PolygonDef();
floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
floorShapeDef.friction = 0.3;
floorShapeDef.density = 0;
//物体を作る
var floor:b2Body = world.CreateBody(floorBodyDef);
floor.CreateShape(floorShapeDef);
</pre>
<p>
落下物をつくる
</p>
<pre class="brush: jscript; auto-links: false;">
for (var i:uint = 0; i &lt; 20; i++) {
    // 物体の定義を作る (x 座標と角度はランダム)
    var bodyDef:b2BodyDef = new b2BodyDef();
    bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
    bodyDef.angle = Math.PI / 2 * Math.random();
    // 物体を作る
    body = world.CreateBody(bodyDef);
    // 形の定義を作る
    var bodyShape:b2CircleDef = new b2CircleDef();
    bodyShape.radius = Math.random()*0.3+0.05;
    bodyShape.density = 0.5;
    bodyShape.friction = 1;
    bodyShape.restitution = 0.3;
    // 形を物体に追加する
    body.CreateShape(bodyShape);
    // 重さ・重心を計算する
    body.SetMassFromShapes();
}
</pre>
<p>
基本は上記の世界の設定、床など（固定物）の設定、落下物の設定が必要で、さらにエンターフレームやデバックドローの設定をするとBox2Dの世界が開けます。<br />
以下はカスタムクラスでのコードになりますので、Flashを使う場合はflaファイルのドキュメントプロパティーにカスタムクラス名を指定して下さい。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	//インポート
	import Box2D.Collision.*;
	import Box2D.Collision.Shapes.*;
	import Box2D.Common.Math.*;
	import Box2D.Dynamics.*;
	import Box2D.Dynamics.Joints.*;
	import General.*;
	import flash.display.Sprite;
	import flash.events.Event;

	/**************************
	 * ADD CHILD = AS3
	 * http://www.addchild.net/
	 * Tatsuya Nishino
	***************************/
	//コンスラクタ
	public class Box2D1 extends Sprite {
		//インスタンスプロパティー
		private const SCALE:Number = 100; // 物理エンジン内の1mを表すためのピクセル数
		private var world:b2World; // 物理エンジンの管理クラス
		private var body:b2Body; // 本体

		// メソッド
		public function Box2D1() {
			// 初期化
			init();
			createObject();

			// 毎フレームの処理
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
		// init
		private function init():void {
			/*************************
			 *物理エンジンのセットアップ
			**************************/
			//外枠の定義
			var worldAABB:b2AABB = new b2AABB();
			worldAABB.lowerBound.Set(-100, -100);
			worldAABB.upperBound.Set(100, 100);

			//重力の定義
			var gravity:b2Vec2 = new b2Vec2(0, 10);

			//エンジンのセットアップ
			world = new b2World(worldAABB, gravity, true);

			/*************************
			 *床を作る
			**************************/
			//物体の定義
			var floorBodyDef:b2BodyDef = new b2BodyDef();
			floorBodyDef.position.Set(2.5, 3); // 床の位置
			floorBodyDef.angle = Math.PI / 24; //角度を指定

			//物体の形の定義
			var floorShapeDef:b2PolygonDef = new b2PolygonDef();
			floorShapeDef.SetAsBox(3, 0.1); //物体のサイズ
			floorShapeDef.friction = 0.3;
			floorShapeDef.density = 0;

			//物体を作る
			var floor:b2Body = world.CreateBody(floorBodyDef);
			floor.CreateShape(floorShapeDef);
			/*************************
			 *DebugDraw を有効にする
			**************************/
			var m_sprite:Sprite = new Sprite();
			var debugDraw:b2DebugDraw = new b2DebugDraw();
			debugDraw.m_sprite = m_sprite;
			debugDraw.m_drawScale = SCALE;
			debugDraw.m_fillAlpha = 0.5;
			debugDraw.m_lineThickness = 1;
			debugDraw.m_drawFlags = b2DebugDraw.e_shapeBit;
			world.SetDebugDraw(debugDraw);
			addChild(m_sprite);
		}
		private function createObject():void {
			/*************************
			 *落下物のセットアップ
			**************************/
			for (var i:uint = 0; i &lt; 20; i++) {
				// 物体の定義を作る (x 座標と角度はランダム)
				var bodyDef:b2BodyDef = new b2BodyDef();
				bodyDef.position.Set((300 * Math.random()) / SCALE, 0);
				bodyDef.angle = Math.PI / 2 * Math.random();

				// 物体を作る
				body = world.CreateBody(bodyDef);

				// 形の定義を作る
				var bodyShape:b2CircleDef = new b2CircleDef();
				bodyShape.radius = Math.random()*0.3+0.05;
				bodyShape.density = 0.5;
				bodyShape.friction = 1;
				bodyShape.restitution = 0.3;

				// 形を物体に追加する
				body.CreateShape(bodyShape);

				// 重さ・重心を計算する
				body.SetMassFromShapes();
			}
		}
		//enterFrameHandler
		private function enterFrameHandler(event:Event):void {
			world.Step(1 / 24, 10);
		}
	}
}
</pre>
<div id="flash">
Box2DFlashAS3（ver2.0.2）を使って物理エンジンを体験する
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/middle/Box2D-1.swf", "flash", "550", "400", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/pf/380.html" title="物理エンジン[Box2D]を使ったの作品紹介 (2010年1月8日)">物理エンジン[Box2D]を使ったの作品紹介</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/358.html" title="FlashDevelopの便利ショートカット (2009年12月24日)">FlashDevelopの便利ショートカット</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/331.html" title="FlashDevelopのインストールと初期設定 (2009年11月10日)">FlashDevelopのインストールと初期設定</a> (2)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-middle/box2d-as3-middle/407.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>物理エンジン[Box2D]を使ったの作品紹介</title>
		<link>http://www.addchild.net/pf/380.html</link>
		<comments>http://www.addchild.net/pf/380.html#comments</comments>
		<pubDate>Fri, 08 Jan 2010 08:37:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ポートフォリオ]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=380</guid>
		<description><![CDATA[外部から読み込んだ画像（制作実績）に物理エンジンを設定してみる

よく見かけてやってみたいと思っていましたが、実際やってみるとすごい苦労しました。
激しく上に掘り投げるとどっか行ってしまいます…


物理エンジンBox2 [...]]]></description>
			<content:encoded><![CDATA[<h3>外部から読み込んだ画像（制作実績）に物理エンジンを設定してみる</h3>
<p>
よく見かけてやってみたいと思っていましたが、実際やってみるとすごい苦労しました。<br />
激しく上に掘り投げるとどっか行ってしまいます…
</p>
<div id="flash">
物理エンジンBox2Dを利用した制作実績
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/pf/1-A.swf", "flash", "700", "500", "9.0.0");
</script></p>
<dl>
<dt>制作日</dt>
<dd>2010年１月8日</dd>
<dt>使用ツール</dt>
<dd>ActionScript 3.0｜FlashDevelop｜Box2DFlashAS3 ver2.0.1</dd>
</dl>
<p>
まだまだ勉強不足で色んなサイトを巡回し、実験してはダメの繰り返しで取り合えずではありますが、こんな感じに仕上げました。<br />
コードはとても見せれたもんではないので、もう少し勉強してからと言うことでお願いします。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/411.html" title="Box2DFlashAS3を使ってマウス操作する[Box2D-2] (2010年2月9日)">Box2DFlashAS3を使ってマウス操作する[Box2D-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-middle/box2d-as3-middle/407.html" title="Box2DFlashAS3を使ってみる[Box2D-1] (2010年1月19日)">Box2DFlashAS3を使ってみる[Box2D-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/pf/380.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
