フレーム毎の処理、衝突時の処理

またメモ。

 

◇フレーム毎の処理

init()内

this->schedule(schedule_selector(HelloWorld::maiFrame));

 

こうすると、フレーム毎にHelloWorld::maiFrameが呼ばれる。

(綴りはわざとね

 

キャラがゴールに到達したときの判定や、時間を測りたいときなんかに。

秒数指定も出来るので、一定間隔で処理させることも可能。

 

 

◇衝突時の判定

init内

auto contactListener = EventListenerPhysicsContact::create();

contactListener->onContactBeginCC_CALLBACK_1(HelloWorld::onContactBegin, this);

this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(contactListener, this);

物理演算世界で使用。

物体がぶつかるとHelloWorld::onContactBeginが呼ばれる。

 

bool HelloWorld::onContactBegin(PhysicsContact& contact)

関数の頭はこんな感じ。

PhysicsContact型というのに色々ステータスが入っているのだろうか。

 

ちなみにこれだけではここまで来ない。

衝突時に処理させたい2つのパーマネントに以下の仕込みを行う。

 

pBall1->setContactTestBitmask(1);

pBall2->setContactTestBitmask(1);

こうすると衝突時にHelloWorld::onContactBeginが走る。

ただし、物理的にはぶつからなくなる様子。

ボールがすり抜けてしまう。

 

解決策知ってる方いたら教えて。