cocos2d-x 3.0 新しい物理演算クラスの利用
-
Upload
tomoaki-shimizu -
Category
Technology
-
view
3.758 -
download
2
description
Transcript of cocos2d-x 3.0 新しい物理演算クラスの利用
cocos2d-x 3.0 新しい物理演算クラスの利用
株式会社TKS2 清水友晶
清水 友晶 � 株式会社TKS2 スマートフォンアプリ開発 Webコンテンツ開発
� 日本cocos2d-xユーザ会代表 講演活動 執筆活動
� チラ裏開発メモ: http://tks2.net/memo
� SlideShare: http://www.slideshare.net/doraemonsss
� 6/25発売 � 2,800円 + 税 � 400ページ
� 6/18発売 � 2,980円 + 税 � 312ページ
� 日経ソフトウェア2014年2月号
� 日本cocos2d-xユーザ会 http://cocos2d-x.jp
� cocos2d-x開発元Chukong Technologies社公認
� cocos2d-xのための自由なコミュニティー
� 入門者から上級者まで誰でもOK!!ぜひご参加を! (1100人以上参加)
� cocos2d-xに関することなら何でも投稿できます!!
� https://www.facebook.com/groups/cocos2dxjp/
� 1/23 第16回 shinjuku.cocos2d-x
� 2/20 第17回 shinjuku.cocos2d-x
� 3/M 第18回 shinjuku.cocos2d-x
目次 � cocos2d-xの物理演算エンジンについて
� Chipmunkについて
� 物理空間の基本
� 新しい物理演算用クラスについて � PhysicsWorld � PhysicsBody � PhysicsContact � PhysicsJoint
cocos2d-xの物理演算エンジンについて � cocos2d for iPhoneやcocos2d-x (C++)では、次の2D向け物理演算エンジンが利用できることが知られている � Box2D � Chipmunk
� JavaScript Bindings(JSB)においては、Box2Dでのパフォーマンスが悪いため、Chipmunkのみが利用されていた
� cocos2d-x 3.0 betaでは、3種類の物理演算エンジンの利用方法がある � 物理演算エンジンを直接利用する (Box2D, chipmunk) � PhysicsSpriteクラスの利用 (Box2D, chipmunk)
� こちらの方法は、日経ソフトウェア2014年2月号で紹介 � PhysicsWorld, PhysicsBodyクラスなどの利用(chipmunk)
� 今日のハンズオンで紹介
Chipmunkについて � http://chipmunk-physics.net
� C言語で開発された2D向け物理演算エンジン
� 無償で利用可能
� 有償版もある � Unity向け(C#) � PRO版
物理空間の基本 � 物理空間(world)を用意する
� オブジェクトに対して、物理構造(body)を用意する
World(Space)
それぞれに物理構造(body)を与える
新しい物理演算用クラスについて � cocos2d-x 2.x系までは、Box2DやChipmunkが用意しているメソッド・構造体などを直接(CCPhysicsSpriteクラスを含む)利用する必要があった(3.x系でも利用可能)
� cocos2d-x 3.x系より、Chipmunkを知らなくても物理演算用のクラスを利用することで、物理エンジンを利用することが可能になった � Sceneクラスには、標準で物理空間(world)を用意できるメソッドが追加された
� Spriteクラスには、標準で物理構造(body)を設定できるメソッドが追加された
� その他、便利なクラスが多数用意されている
今日使う画像
� ボール http://goo.gl/gfCcL3
PhysicsWorld � 物理空間に相当する � worldは、Sceneクラスが保持する � Sceneクラスのインスタンスを生成するとき、次のメソッドを実行する � Scene::createWithPhysics()
� そのインスタンスに対して、getPhysicsWorld()メソッドを実行することで、PhysicsWorldを取得できる
� 重力は、PhysicsWorldに対してsetGravity()メソッドにより設定する
PhysicsBody � 物理構造に相当する � PhysicsBody::create()メソッドの他に、次のようなメソッドが用意されている � createCircle() � createBox() � createEdgeBox() � createPolygon()
� SpriteクラスのsetBodyメソッドの引数に、PhysicsBodyクラスのインスタンスを渡すことで、オブジェクトに対して物理構造を与えることができる
PhysicsContact � 物理構造を持ったオブジェクト同士が、衝突したときのイベントを受け取ることができる
� イベントリスナーを利用する � EventListenerPhysicsContact
� 受け取るイベントは次の4つ � onContactBegin � onContactSeperate � onContactPreSolve � onContactPostSolve
� 特定のオブジェクト同士が、衝突したときのイベントのみを受けることも可能
PhysicsJoint � 2つのオブジェクトを連結することができる
� PhysicsJointクラスを利用することで様々な連結を行うことができる
� ただし振る舞いを想像しにくい。。。&説明しにくい
� サンプルを見たほうが、理解しやすい � cocos2d-x TestCPP - PhysicsTest
おわり
� 次回、CocoStudioとcocos2d-xの連携2