Box2D 今昔物語
-
Upload
rch850- -
Category
Technology
-
view
2.766 -
download
7
description
Transcript of Box2D 今昔物語
Box2D今昔物語
rch850 [ りちゃ ] 2009/04/25 Flex3 勉強会第 66 回 @ 北陸
Box2D 今昔物語
自己紹介
• ハンドルネーム : rch850/ りちゃ– rich850 だったりもする
• ソフトウェアエンジニア @ 福井– 茨城→石川→福井
• http://twitter.com/rch850
Box2D 今昔物語
時は 2007 年末……
Box2D 今昔物語
Box2D 今昔物語
Box2DFlashAS3 !!
• Flash に物理エンジンが颯爽と登場• 今までも APE があったけど、書きにく
さから敬遠されていた• GIGAZINE あたりにも登場
ぐぬぬ
Box2D 今昔物語
なんなの?
• 2D 物理エンジン• 本来は C++ のライブラリ• その AS3 移植が Box2DFlashAS3• 単に Box2D と言った場合は Box2DFlas
hAS3 を指すことが多い様子
Box2D 今昔物語
して、その中身は
Box2D 今昔物語
Ver. 1.4.2
public function CleanBodyList()
{
m_contactManager.m_destroyImmediate = true;
// …… 戻り値は?
Box2D 今昔物語
Ver. 1.4.2
public virtual functionGetAnchor1():b2Vec2{return null};
public virtual function GetAnchor2():b2Vec2{return null};
// どういうことなの……
Box2D 今昔物語
参考 : よくある C++ コード
class Hoge {
int m_Value;
public:
virtual void setValue(int i) {
m_Value = i;
}
};
Box2D 今昔物語
コンパイルとおらね
• mxmlc でコンパイル通らず– CS3 では大丈夫らしい– コンパイルオプションいじってもおk
• 前途多難だなぁ
Box2D 今昔物語
Box2D 今昔物語
2008 年
Box2D 今昔物語
2.0.0
• 大規模な API 変更– パッケージ名– クラスの追加、削除
• 阿鼻叫喚
Box2D 今昔物語
2.0.1
• バージョンが 0.0.1 上がっただけなのに主要 API の仕様変更– CreateStaticBody, CreateDynamicBody が Cr
eateBody にまとめられた• 阿鼻叫喚
Box2D 今昔物語
2.0.2
• まだ正式リリースではないっぽい• 阿鼻叫喚(予想)
Box2D 今昔物語
2009 年
Box2D 今昔物語
テオヤンセン展
• Twitter で「テオヤンセン展」という言葉をぼちぼち見かけるように
• ておやんせん• ておやんせん• ておやんせん• …… ん?
Box2D 今昔物語
!?
Box2D 今昔物語
というわけで見に行ってきた
Box2D 今昔物語
最近
• 北海道を落とすとどう跳ねるのか?– http://d.hatena.ne.jp/nitoyon/20090415/
hokkaido
Box2D 今昔物語
デモ
Box2D 今昔物語
Special Thanks
• http://sazameki.org/
Box2D 今昔物語
概念
Box2D 今昔物語
Body 定義
World
Body 1
Shape 定義
Body 2
Box2D 今昔物語
言葉で説明すると
• まず世界がある• 世界が質点を与える• 質点に形状を与えて剛体にする
• 何でこんなに冗長?– C++ のライブラリだから……だと思う
Box2D 今昔物語
World
bd1
b1
sd1
bd3
b3
sd3
bd2
b2
sd2
Box2D 今昔物語
World
• 物理シミュレーションが展開される世界– 影響範囲と重力を定める
• Body はこの中に生成される
Box2D 今昔物語
[Point] 単位
• MKS– 長さ : メートル– 質量 : キログラム– 時間 : 秒
•勝手に決めることもできるが、よく分からなくなるのでおすすめしない
Box2D 今昔物語
Body 定義
•座標と速度を定義する– 質点のこと(?)
• b2BodyDefクラス• これをWorld に与えて Body を作る
Box2D 今昔物語
Body
• いわゆる物体、それっぽく言うと剛体• Body の定義と Shape の定義から生成さ
れる•静的な Body と動的な Body がある• b2Body クラス
Box2D 今昔物語
Shape 定義
• 形状やその特性を定義する– 摩擦、弾性
• Body に Shape 定義を与えることにより、物体に形状が生まれる
• b2ShapeDefクラス– 実際は b2PolygonDefや b2CircleDefを使う
•実は Shape 定義から Shape を作れるが、Bodyほど重要ではない
Box2D 今昔物語
その他機能
• Joint– 物体と物体をつなぐもの
• Debug Draw– Box2D唯一の画面出力機能
• Contact Listener– 接触(衝突)判定
Box2D 今昔物語
続きはWebで
•公式マニュアル– http://www.box2d.org/manual.html
• Box2D で ActionScript 物理プログラミング– http://gihyo.jp/dev/feature/01/box2d