スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cocos2d javascriptの物理エンジン

開発メモ。

cocos2dのjavascriptでは、現在chipmunkが対応されてます。

が、chipmunkの資料って日本語が殆ど無いのです。
みんなbox2dばかり。
というか、正直オススメはbox2dです。

でも、最近CocosBuilderを良く使うので、

その中で手軽に使える物理エンジンChipmunkをよく使ってます。

というわけで、超簡単ですがシンプルな使い方だけ説明していこうかと。

まず、空間の作成。

 this._space = new cp.Space();
 this._space.iterations = 20;
 this._space.gravity = cp.v(0, -GRAVITY);

みたいな感じ。
んで、毎ループで

 this._space.step(1/60);

を実行すればOKです。

とりあえず上下左右に壁を作るのであれば以下のソースを参考に。

 var staticBody = this._space.staticBody;

 var x = 0;
 var y = 0;
 var w = _winSize.width;
 var h = _winSize.height;

 // Walls
 var walls = [
  new cp.SegmentShape(staticBody, cp.v(x, y), cp.v(w, y), 0), // bottom
  new cp.SegmentShape(staticBody, cp.v(x, h), cp.v(w, h), 0), // top
  new cp.SegmentShape(staticBody, cp.v(x, y), cp.v(x, h), 0), // left
  new cp.SegmentShape(staticBody, cp.v(w, y), cp.v(w, h), 0) // right
 ];
 var i;
 for (i = 0; i < walls.length; i++) {
  var wall = walls[i];
  wall.setElasticity(0);
  wall.setFriction(0);
  wall.setCollisionType(COLLISION_TYPE_WALL);
  this._space.addStaticShape(wall);
 }

Staticは固定ってことですね。_winSizeはcc.Director.getInstance().getWinSize()で取ってきてあります。

物理エンジンは、その世界の中でオブジェクトを色々と作って、物理的な性質を与えたり動かしたりすると、オブジェクトの状態を自動的に計算してくれるものです。

ボディ・・・胴体。オブジェクト。
シェイプ・・・形状。使える形状は円や四角、多角形、直線等。どのボディに追加するか指定する。パラメータで弾力や摩擦を設定できる。上記ソースのsetElasticityが弾力で、setFrictionが摩擦ですね。
衝突・・・基本的には全部衝突しますが、別のレイヤーや同じグループにすることで、衝突しない関係を作れます。衝突時に関数を実行することも可能です。
ジョイント・・・ボディ同士を連結出来ます。色々ありますが良い動画があるので貼っときます。


それぞれの使い方は後々書いていこうと思います。
関連記事

コメントの投稿

非公開コメント

プロフィール

エロぺんぎん

管理人:エロぺんぎん
不純な動機でプログラマーになった男、エロぺんぎんです。ブラザー達を猛烈に応援したい気持ちと、自分もプログラマーとして成長したい思いで、当ブログを立ち上げました。
エロぺん動画を運営しております。

検索フォーム
Twitter
最新記事
最新コメント
カテゴリ
リンク
RSSリンク
エロぺん動画で人気の動画
人気の記事