auto 変数 = PhysicsBody::createBox( 大きさ );
auto 変数 = PhysicsBody::createCircle( 半径 );
《PhysicsBody》->setDynamic( 真偽値 );
《PhysicsBody》>setRotationEnable(false);
物理特性による動きを考えたとき、「回転」を許可するかどうかは重要です。例えば横スクロールゲームなどでは、キャラクタはどんなにぶつかったりしてもちゃんと上下の向きは保ったままになっていますね? setRotationEnableをtrueにすると、ぶつかったりして加えられた力によってキャラクタの向きも変わります。falseにすると、どんなに力が加わっても向きはロックされ変わらなくなります。《Sprite》->setPhysicsBody(《PhysicsBody》);
PhysicsBodyの設定がひと通り完了したら、Spriteの「setPhysicsBody」を使い、作成したPhysicsBodyをSpriteに設定します。これで作業は終了です。※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
bool HelloWorld::init() { if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Director::getInstance()->setDisplayStats(false); sprite1 = Sprite::create("base.png"); sprite1->setPosition(origin.x + visibleSize.width / 2, origin.y + 100); this->addChild(sprite1, 1); auto baseBody = PhysicsBody::createBox(sprite1->getContentSize()); baseBody->setDynamic(false); baseBody->setRotationEnable(false); sprite1->setPhysicsBody(baseBody); sprite1->setRotation(10.0f); sprite2 = Sprite::create("character.png"); sprite2->setPosition(origin.x + visibleSize.width / 2, origin.y + 300); this->addChild(sprite2, 1); auto charBody = PhysicsBody::createCircle(sprite2->boundingBox().size.width / 2); charBody->setMass(10.0f); charBody->setDynamic(true); charBody->setRotationEnable(true); sprite2->setPhysicsBody(charBody); return true; }
<< 前へ | 次へ >> |