34
Box2D 今今今今 rch850 [ 今今今 ] 2009/04/25 Flex3 今今今今 66 今 @ 今今

Box2D 今昔物語

  • Upload
    rch850-

  • View
    2.775

  • Download
    7

Embed Size (px)

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

Citation preview

Page 1: Box2D 今昔物語

Box2D今昔物語

rch850 [ りちゃ ] 2009/04/25 Flex3 勉強会第 66 回 @ 北陸

Page 2: Box2D 今昔物語

Box2D 今昔物語

自己紹介

• ハンドルネーム : rch850/ りちゃ– rich850 だったりもする

• ソフトウェアエンジニア @ 福井– 茨城→石川→福井

• http://twitter.com/rch850

Page 3: Box2D 今昔物語

Box2D 今昔物語

時は 2007 年末……

Page 4: Box2D 今昔物語

Box2D 今昔物語

Page 5: Box2D 今昔物語

Box2D 今昔物語

Box2DFlashAS3 !!

• Flash に物理エンジンが颯爽と登場• 今までも APE があったけど、書きにく

さから敬遠されていた• GIGAZINE あたりにも登場

ぐぬぬ

Page 6: Box2D 今昔物語

Box2D 今昔物語

なんなの?

• 2D 物理エンジン• 本来は C++ のライブラリ• その AS3 移植が Box2DFlashAS3• 単に Box2D と言った場合は Box2DFlas

hAS3 を指すことが多い様子

Page 7: Box2D 今昔物語

Box2D 今昔物語

して、その中身は

Page 8: Box2D 今昔物語

Box2D 今昔物語

Ver. 1.4.2

public function CleanBodyList()

{

m_contactManager.m_destroyImmediate = true;

// …… 戻り値は?

Page 9: Box2D 今昔物語

Box2D 今昔物語

Ver. 1.4.2

public virtual functionGetAnchor1():b2Vec2{return null};

public virtual function GetAnchor2():b2Vec2{return null};

// どういうことなの……

Page 10: Box2D 今昔物語

Box2D 今昔物語

参考 : よくある C++ コード

class Hoge {

int m_Value;

public:

virtual void setValue(int i) {

m_Value = i;

}

};

Page 11: Box2D 今昔物語

Box2D 今昔物語

コンパイルとおらね

• mxmlc でコンパイル通らず– CS3 では大丈夫らしい– コンパイルオプションいじってもおk

• 前途多難だなぁ

Page 12: Box2D 今昔物語

Box2D 今昔物語

Page 13: Box2D 今昔物語

Box2D 今昔物語

2008 年

Page 14: Box2D 今昔物語

Box2D 今昔物語

2.0.0

• 大規模な API 変更– パッケージ名– クラスの追加、削除

• 阿鼻叫喚

Page 15: Box2D 今昔物語

Box2D 今昔物語

2.0.1

• バージョンが 0.0.1 上がっただけなのに主要 API の仕様変更– CreateStaticBody, CreateDynamicBody が Cr

eateBody にまとめられた• 阿鼻叫喚

Page 16: Box2D 今昔物語

Box2D 今昔物語

2.0.2

• まだ正式リリースではないっぽい• 阿鼻叫喚(予想)

Page 17: Box2D 今昔物語

Box2D 今昔物語

2009 年

Page 18: Box2D 今昔物語

Box2D 今昔物語

テオヤンセン展

• Twitter で「テオヤンセン展」という言葉をぼちぼち見かけるように

• ておやんせん• ておやんせん• ておやんせん• …… ん?

Page 19: Box2D 今昔物語

Box2D 今昔物語

!?

Page 20: Box2D 今昔物語

Box2D 今昔物語

というわけで見に行ってきた

Page 21: Box2D 今昔物語

Box2D 今昔物語

最近

• 北海道を落とすとどう跳ねるのか?– http://d.hatena.ne.jp/nitoyon/20090415/

hokkaido

Page 22: Box2D 今昔物語

Box2D 今昔物語

デモ

Page 23: Box2D 今昔物語

Box2D 今昔物語

Special Thanks

• http://sazameki.org/

Page 24: Box2D 今昔物語

Box2D 今昔物語

概念

Page 25: Box2D 今昔物語

Box2D 今昔物語

Body 定義

World

Body 1

Shape 定義

Body 2

Page 26: Box2D 今昔物語

Box2D 今昔物語

言葉で説明すると

• まず世界がある• 世界が質点を与える• 質点に形状を与えて剛体にする

• 何でこんなに冗長?– C++ のライブラリだから……だと思う

Page 27: Box2D 今昔物語

Box2D 今昔物語

World

bd1

b1

sd1

bd3

b3

sd3

bd2

b2

sd2

Page 28: Box2D 今昔物語

Box2D 今昔物語

World

• 物理シミュレーションが展開される世界– 影響範囲と重力を定める

• Body はこの中に生成される

Page 29: Box2D 今昔物語

Box2D 今昔物語

[Point] 単位

• MKS– 長さ : メートル– 質量 : キログラム– 時間 : 秒

•勝手に決めることもできるが、よく分からなくなるのでおすすめしない

Page 30: Box2D 今昔物語

Box2D 今昔物語

Body 定義

•座標と速度を定義する– 質点のこと(?)

• b2BodyDefクラス• これをWorld に与えて Body を作る

Page 31: Box2D 今昔物語

Box2D 今昔物語

Body

• いわゆる物体、それっぽく言うと剛体• Body の定義と Shape の定義から生成さ

れる•静的な Body と動的な Body がある• b2Body クラス

Page 32: Box2D 今昔物語

Box2D 今昔物語

Shape 定義

• 形状やその特性を定義する– 摩擦、弾性

• Body に Shape 定義を与えることにより、物体に形状が生まれる

• b2ShapeDefクラス– 実際は b2PolygonDefや b2CircleDefを使う

•実は Shape 定義から Shape を作れるが、Bodyほど重要ではない

Page 33: Box2D 今昔物語

Box2D 今昔物語

その他機能

• Joint– 物体と物体をつなぐもの

• Debug Draw– Box2D唯一の画面出力機能

• Contact Listener– 接触(衝突)判定

Page 34: Box2D 今昔物語

Box2D 今昔物語

続きはWebで

•公式マニュアル– http://www.box2d.org/manual.html

• Box2D で ActionScript 物理プログラミング– http://gihyo.jp/dev/feature/01/box2d