cocos2d-x 3.0 新しい物理演算クラスの利用

16
cocos2d-x 3.0 新しい物理演算クラスの利用 株式会社TKS2 清水友晶

description

cocos2d-x 3.0 新しい物理演算クラスの利用

Transcript of cocos2d-x 3.0 新しい物理演算クラスの利用

Page 1: cocos2d-x 3.0 新しい物理演算クラスの利用

cocos2d-x 3.0 新しい物理演算クラスの利用

株式会社TKS2 清水友晶

Page 2: cocos2d-x 3.0 新しい物理演算クラスの利用

清水 友晶 �  株式会社TKS2 スマートフォンアプリ開発 Webコンテンツ開発

�  日本cocos2d-xユーザ会代表 講演活動 執筆活動

�  チラ裏開発メモ: http://tks2.net/memo

�  SlideShare: http://www.slideshare.net/doraemonsss

Page 3: cocos2d-x 3.0 新しい物理演算クラスの利用

�  6/25発売 �  2,800円 + 税 �  400ページ

�  6/18発売 �  2,980円 + 税 �  312ページ

�  日経ソフトウェア2014年2月号

Page 4: cocos2d-x 3.0 新しい物理演算クラスの利用

�  日本cocos2d-xユーザ会 http://cocos2d-x.jp

�  cocos2d-x開発元Chukong Technologies社公認

�  cocos2d-xのための自由なコミュニティー

�  入門者から上級者まで誰でもOK!!ぜひご参加を! (1100人以上参加)

�  cocos2d-xに関することなら何でも投稿できます!!

�  https://www.facebook.com/groups/cocos2dxjp/

Page 5: cocos2d-x 3.0 新しい物理演算クラスの利用

�  1/23 第16回 shinjuku.cocos2d-x

�  2/20 第17回 shinjuku.cocos2d-x

�  3/M 第18回 shinjuku.cocos2d-x

Page 6: cocos2d-x 3.0 新しい物理演算クラスの利用

目次 �  cocos2d-xの物理演算エンジンについて

�  Chipmunkについて

�  物理空間の基本

�  新しい物理演算用クラスについて �  PhysicsWorld �  PhysicsBody �  PhysicsContact �  PhysicsJoint

Page 7: cocos2d-x 3.0 新しい物理演算クラスの利用

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)

�  今日のハンズオンで紹介

Page 8: cocos2d-x 3.0 新しい物理演算クラスの利用

Chipmunkについて �  http://chipmunk-physics.net

�  C言語で開発された2D向け物理演算エンジン

�  無償で利用可能

�  有償版もある �  Unity向け(C#) �  PRO版

Page 9: cocos2d-x 3.0 新しい物理演算クラスの利用

物理空間の基本 �  物理空間(world)を用意する

�  オブジェクトに対して、物理構造(body)を用意する

World(Space)

それぞれに物理構造(body)を与える

Page 10: cocos2d-x 3.0 新しい物理演算クラスの利用

新しい物理演算用クラスについて �  cocos2d-x 2.x系までは、Box2DやChipmunkが用意しているメソッド・構造体などを直接(CCPhysicsSpriteクラスを含む)利用する必要があった(3.x系でも利用可能)

�  cocos2d-x 3.x系より、Chipmunkを知らなくても物理演算用のクラスを利用することで、物理エンジンを利用することが可能になった �  Sceneクラスには、標準で物理空間(world)を用意できるメソッドが追加された

�  Spriteクラスには、標準で物理構造(body)を設定できるメソッドが追加された

�  その他、便利なクラスが多数用意されている

Page 11: cocos2d-x 3.0 新しい物理演算クラスの利用

今日使う画像

�  ボール http://goo.gl/gfCcL3

Page 12: cocos2d-x 3.0 新しい物理演算クラスの利用

PhysicsWorld �  物理空間に相当する �  worldは、Sceneクラスが保持する �  Sceneクラスのインスタンスを生成するとき、次のメソッドを実行する �  Scene::createWithPhysics()

�  そのインスタンスに対して、getPhysicsWorld()メソッドを実行することで、PhysicsWorldを取得できる

�  重力は、PhysicsWorldに対してsetGravity()メソッドにより設定する

Page 13: cocos2d-x 3.0 新しい物理演算クラスの利用

PhysicsBody �  物理構造に相当する �  PhysicsBody::create()メソッドの他に、次のようなメソッドが用意されている �  createCircle() �  createBox() �  createEdgeBox() �  createPolygon()

�  SpriteクラスのsetBodyメソッドの引数に、PhysicsBodyクラスのインスタンスを渡すことで、オブジェクトに対して物理構造を与えることができる

Page 14: cocos2d-x 3.0 新しい物理演算クラスの利用

PhysicsContact �  物理構造を持ったオブジェクト同士が、衝突したときのイベントを受け取ることができる

�  イベントリスナーを利用する �  EventListenerPhysicsContact

�  受け取るイベントは次の4つ �  onContactBegin �  onContactSeperate �  onContactPreSolve �  onContactPostSolve

�  特定のオブジェクト同士が、衝突したときのイベントのみを受けることも可能

Page 15: cocos2d-x 3.0 新しい物理演算クラスの利用

PhysicsJoint �  2つのオブジェクトを連結することができる

�  PhysicsJointクラスを利用することで様々な連結を行うことができる

�  ただし振る舞いを想像しにくい。。。&説明しにくい

�  サンプルを見たほうが、理解しやすい �  cocos2d-x TestCPP - PhysicsTest

Page 16: cocos2d-x 3.0 新しい物理演算クラスの利用

おわり

�  次回、CocoStudioとcocos2d-xの連携2