box2d 今昔物語

Post on 29-Nov-2014

2.775 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

Flex3勉強会第66回@北陸(福井)における発表資料です。 http://www.fxug.net/modules/bwiki/index.php?cmd=read&page=Flex3%CA%D9%B6%AF%B2%F1%C2%E866%B2%F3%A1%F7%CB%CC%CE%A6%28%CA%A1%B0%E6%29&word=66%B2%F3

TRANSCRIPT

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

top related