bool PlayerComponent::onContactBegin(PhysicsContact& contact) { if (!is_endGame) { PhysicsBody *a = contact.getShapeB()->getBody(); if ((a->getCollisionBitmask() == OBSTACLE_ID) || (a->getCollisionBitmask() == SPIKESBORDER_ID)) { is_onTouch = false; is_fall = false; is_endGame = true; // display 'dialog box' this->getOwner()->addChild(MyDialogBox::create( { Label::create("Your Score:", "Calibri", 30), Label::create(StringUtils::toString(((ScoreCounterComponent*)this->getOwner()->getComponent(SCORECOUNTER_NAME))->getScore()), "Calibri", 120) }, { DialogBoxButton("TRY AGAIN", TextHAlignment::LEFT, CC_CALLBACK_1(GameScene::goToGameScene, ((GameScene*)this->getOwner()))), DialogBoxButton("BACK TO\n MAIN MENU", TextHAlignment::RIGHT, CC_CALLBACK_1(GameScene::goToMainMenuScene, ((GameScene*)this->getOwner()))) } ), 10); } } return false; }
bool GameScene::onContactBegin(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ( (SNAKE_COLLISION_BITMASK == a->getCollisionBitmask() && FOOD_COLLISION_BITMASK == b->getCollisionBitmask()) || (SNAKE_COLLISION_BITMASK == b->getCollisionBitmask() && FOOD_COLLISION_BITMASK == a->getCollisionBitmask()) ) { srand(time(NULL)); auto random = rand() % 370 + 30; auto random2 = rand() % 270 + 30; auto moveTo = MoveTo::create(0, Vec2(random, random2)); food->runAction(moveTo); int tempX = snakeParts.back()->getPositionX(); int tempY = snakeParts.back()->getPositionY(); Sprite* tempSprite = Sprite::create("snake.png"); switch (direction) { case LEFT: tempSprite->setPosition(tempX + 10, tempY); break; case RIGHT: tempSprite->setPosition(tempX - 10, tempY); break; case UP: tempSprite->setPosition(tempX, tempY + 10); break; case DOWN: tempSprite->setPosition(tempX, tempY - 10); break; } this->addChild(tempSprite); snakeParts.push_back(tempSprite); } return true; }
void LevelThree::onContactSeperate(cocos2d::PhysicsContact &contact) { PhysicsBody* a = contact.getShapeA()->getBody(); PhysicsBody* b = contact.getShapeB()->getBody(); if (1 == a->getCollisionBitmask() || 1 == b->getCollisionBitmask()) { } }
bool LevelThree::onContactPreSolve(cocos2d::PhysicsContact &contact, cocos2d::PhysicsContactPreSolve& solve) { PhysicsBody* a = contact.getShapeA()->getBody(); PhysicsBody* b = contact.getShapeB()->getBody(); if (1 == a->getCollisionBitmask() || 1 == b->getCollisionBitmask()) { solve.setRestitution(0); } return true; }
bool HelloWorld::onContactBegin(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ((1 == a->getCollisionBitmask() && 2 == b->getCollisionBitmask()) || (2 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask())) { auto spriteA = (Sprite*)a->getNode(); auto spriteB = (Sprite*)b->getNode(); if (2 == b->getCollisionBitmask()) { this->removeChild(spriteB, true); score++; } else if (2 == a->getCollisionBitmask()) { this->removeChild(spriteA, true); score++; } } return true; }
bool GameScene::onContactBegin( cocos2d::PhysicsContact &contact ) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ( ( BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == b->getCollisionBitmask() ) || ( BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == a->getCollisionBitmask() ) ) { CCLOG("a :%i", a->getCollisionBitmask()); CCLOG("b: %i", b->getCollisionBitmask() ); CCLOG("Score: %i", score ); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("Sounds/Hit.mp3"); auto scene = GameOverScene::createScene( score ); Director::getInstance()->replaceScene(TransitionFade::create( TRANSITION_TIME, scene ) ); } else if ( ( BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && POINT_COLLISION_BITMASK == b->getCollisionBitmask() ) || ( BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && POINT_COLLISION_BITMASK == a->getCollisionBitmask() ) ) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("Sounds/Point.mp3"); score++; __String *tempScore = __String::createWithFormat( "%i", score ); scoreLabel->setString( tempScore->getCString() ); } return true; }
bool GameScene::onContactBegin(cocos2d::PhysicsContact & contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ((BALL_COLLISION_BITMASK == a->getCollisionBitmask() && (BRICK_COLLISION_BITMASK) == b->getCollisionBitmask()) || (BALL_COLLISION_BITMASK == b->getCollisionBitmask() && (BRICK_COLLISION_BITMASK) == a->getCollisionBitmask())) { auto bricky = b->getNode(); this->removeChild(bricky); score++; __String *tempScore = __String::createWithFormat( "%i", score ); scoreLabel->setString( tempScore->getCString( ) ); if (score == 50) { auto scene = GameOverScene::createScene(score); Director::getInstance()->replaceScene(TransitionFade::create(TRANSITION_TIME, scene)); } } return true; }
bool GameScene::onContactBegin( cocos2d::PhysicsContact &contact ) { if(gameState == 1) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ((BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == b->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == a->getCollisionBitmask())) { hit(); } } return true; }
bool CGameLayer::onContactBegin(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); contact.getShapeA()->getTag(); if (((MASK_BALL == a->getCollisionBitmask()) && (BORDER_CONTACT_BITMASK == b->getCollisionBitmask())) || ((MASK_BALL == b->getCollisionBitmask()) && (BORDER_CONTACT_BITMASK == a->getCollisionBitmask()))) { if (m_startBallMovement) { --g_gameState->m_life; this->removeChildByTag(TAG_BALL, true); m_ball.erase(m_ball.begin()); CBall *_ball = new (std::nothrow) CBall(); _ball->init(this, g_gameState->m_acc * g_gameState->m_level, m_player->GetPosition()); //this->addChild(_ball); m_ball.push_back(_ball); m_startBallMovement = false; } return true; } if (((MASK_BALL == a->getCollisionBitmask()) && (MASK_BLOCK == b->getCollisionBitmask())) || ((MASK_BALL == b->getCollisionBitmask()) && (MASK_BLOCK == a->getCollisionBitmask()))) { int pTag; if ((MASK_BALL == a->getCollisionBitmask()) && (MASK_BLOCK == b->getCollisionBitmask())) { pTag = b->getNode()->getTag(); } else { pTag = a->getNode()->getTag(); } int i = 0; for (auto it = m_blocks.begin(); it != m_blocks.end(); ++it) { if (pTag == m_blocks[i]->getTag()) { playerScore(); m_blocks[i]->del(this); it = m_blocks.erase(it); --it; } ++i; } return true; } else if ((a->getCollisionBitmask() == MASK_BALL && MASK_RACKET == b->getCollisionBitmask()) || (b->getCollisionBitmask() == MASK_BALL && MASK_RACKET == a->getCollisionBitmask())) { return true; } return false; }
bool GameScene::setHit(cocos2d::PhysicsContact &contact) { if (GameManager::sharedGameManager()->isGameLive == true) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); float* v = new float[2]; v[0] = a->getVelocity().length(); // Created By An Unknown Source, Via Stack OverFlow v[1] = b->getVelocity().length(); // Created By An Unknown Source, Via Stack OverFlow contact.setData(v); if ((1 == a->getCollisionBitmask() && 2 == b->getCollisionBitmask()) || (2 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()))// BACK TO FRONT FOR NOW { bool hit = true; } else { bool hit = false; } if (hit = true) { if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { Ball::sharedBall()->AddToDampening(5000.0f); SoundManager::sharedSoundManager()->PlaySoundEffect("ballRebound.mp3", false, 1.0f, 1.0f, 1.0f); } if ((a->getCollisionBitmask() == Brick_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Brick_Bitmask)) { Ball::sharedBall()->AddToDampening(5000.0f); GameManager::sharedGameManager()->AddToScore(1); this->removeChild(contact.getShapeB()->getBody()->getNode()); Ball::sharedBall()->AddToAcceleration(5000); //ScoreLabel->setString(StringUtils::format("%d", GameManager::sharedGameManager()->GetScore())); Vec2 first = contact.getShapeA()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); x = first.x; y = first.y; this->schedule(schedule_selector(GameScene::SetPowerUp)); //level = 50; if (level == 1) { number = number + 1; CCLOG("number = %i", number); brick.SetLevel(level); //if (number == 5) //{ // CCLOG("level 2"); // //level = 2; // this->removeChild(contact.getShapeA()->getBody()->getNode()); //this->schedule(schedule_selector(GameScene::SetBrick)); //this->schedule(schedule_selector(GameScene::SetBall)); //} } else if (level == 2) { number = number + 1; brick.SetLevel(level); /*if (number == 5) { level = 3; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); }*/ } else if (level == 3) { number = number + 1; brick.SetLevel(level); /*if (number == 5) { level = 4; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); }*/ } else if (level == 4) { number = number + 1; brick.SetLevel(level); /*if (number == 5) { level = 5; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); }*/ } else if (level == 5) { number = number + 1; brick.SetLevel(level); } } //LIFE if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == LiveUp_Bitmask) || (a->getCollisionBitmask() == LiveUp_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { GameManager::sharedGameManager()->AddToLives(1); this->removeChild(contact.getShapeA()->getBody()->getNode()); } //TWO if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == TwoSplit_Bitmask) || (a->getCollisionBitmask() == TwoSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); Vec2 BallPos = contact.getShapeB()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); xb = BallPos.x; yb = BallPos.y; balls = balls + 2; ba = ba + 2; CCLOG("Balls pu:%i", balls); this->schedule(schedule_selector(GameScene::SetBall)); } //THREE if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == ThreeSplit_Bitmask) || (a->getCollisionBitmask() == ThreeSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); Vec2 BallPos = contact.getShapeB()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); xb = BallPos.x; yb = BallPos.y; balls = balls + 3; ba = ba + 3; this->schedule(schedule_selector(GameScene::SetBall)); } //FOUR if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == NineSplit_Bitmask) || (a->getCollisionBitmask() == NineSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); Vec2 BallPos = contact.getShapeB()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); xb = BallPos.x; yb = BallPos.y; balls = balls + 8; ba = ba + 8; this->schedule(schedule_selector(GameScene::SetBall)); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { CCLOG("Balls enter:%i", balls); this->lives = GameManager::sharedGameManager()->GetLives(); if (balls <= 1 && lives > 0) { GameManager::sharedGameManager()->AddToLives(-1); this->schedule(schedule_selector(GameScene::SetBall)); balls = balls + 1; ba = ba + 1; } else if (balls <= 1 && lives <= 0) { GameManager::sharedGameManager()->AddToLives(-1); } if (balls > 1 && lives > 0) { balls = balls - 1; CCLOG("Balls return:%i", balls); } if (lives <= 0) { /*auto scene = HelloWorld::createScene(); Director::getInstance()->replaceScene(TransitionFade::create(Transition_Length, scene));*/ this->GameOver(); } this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == LiveUp_Bitmask) || (a->getCollisionBitmask() == LiveUp_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == TwoSplit_Bitmask) || (a->getCollisionBitmask() == TwoSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == ThreeSplit_Bitmask) || (a->getCollisionBitmask() == ThreeSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == NineSplit_Bitmask) || (a->getCollisionBitmask() == NineSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } } } return true; }
void LevelThree::onContactPostSolve(cocos2d::PhysicsContact &contact, const cocos2d::PhysicsContactPostSolve& solve) { PhysicsBody* a = contact.getShapeA()->getBody(); PhysicsBody* b = contact.getShapeB()->getBody(); if (1 == a->getCollisionBitmask() && 21 == b->getCollisionBitmask()) { this->removeAllChildren(); LevelThree::GoToLevel4(); slingshot = true; } else if (21 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { this->removeAllChildren(); LevelThree::GoToLevel4(); slingshot = true; } else { if (1 == a->getCollisionBitmask() && 9 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (9 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 10 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (10 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 11 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (11 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 12 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (12 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 13 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (13 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 14 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (14 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 15 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (15 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 16 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (16 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 17 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (17 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 18 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } else if (18 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { LevelThree::GoToGameOverScene(); slingshot = false; } if (1 == a->getCollisionBitmask() && 2 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (2 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } if (1 == a->getCollisionBitmask() && 3 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (3 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } if (1 == a->getCollisionBitmask() && 4 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (4 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } if (1 == a->getCollisionBitmask() && 6 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (6 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } if (1 == a->getCollisionBitmask() && 7 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (7 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } if (1 == a->getCollisionBitmask() && 8 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } else if (8 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()) { player->getPhysicsBody()->setVelocity(Vec2(0.0f, 0.0f)); slingshot = true; } } }
bool GameSceneQuattro::onContactBegin(cocos2d::PhysicsContact &contact) { cocos2d::log("GameSceneQuattro::onContactBegin ....... inizio "); PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); PhysicsBody *pallinaBody = nullptr ; if ( ! (3 == a->getCollisionBitmask() && 3 == b->getCollisionBitmask())){ if ( 3 == a->getCollisionBitmask() ) { // CCLOG( "GameSceneQuattro::onContactBegin COLLISION HAS OCCURED" ); pallinaBody = contact.getShapeA()->getBody(); } if ( 3 == b->getCollisionBitmask() ) { pallinaBody = contact.getShapeB()->getBody(); } if(pallinaBody){ _emitter->setPosition(pallinaBody->getNode()->getPosition()); _emitter->resetSystem(); _emitter->setDuration(0.5); //prendo tag if (12 == pallinaBody->getTag()){ cocos2d::log("GameSceneQuattro::onContactBegin colpita pallina 2 "); //deve variare la y // pallinaBody->applyForce( Vect(-50, -220) ); pallinaBody->setVelocity(Vec2(randomValueTra(900,900), randomValueTra(0,500))); } if (13 == pallinaBody->getTag()){ cocos2d::log("GameSceneQuattro::onContactBegin colpita pallina 3 "); pallinaBody->setVelocity(Vec2(randomValueTra(900,1900), randomValueTra(0,800))); } if (14 == pallinaBody->getTag()){ cocos2d::log("GameSceneQuattro::onContactBegin colpita pallina 4 "); pallinaBody->setVelocity(Vec2(randomValueTra(900,1900), randomValueTra(0,800))); } if (15 == pallinaBody->getTag()){ cocos2d::log("GameSceneQuattro::onContactBegin colpita pallina 5 "); pallinaBody->setVelocity(Vec2(randomValueTra(900,1900), randomValueTra(-400,800))); } } } if (PIETRA_TAG == a->getTag()){ // cocos2d::log("GameSceneQuattro::onContactBegin ....... 1 "); a-> getNode()->stopAllActions(); a-> getNode()->setVisible(false); a->removeFromWorld(); //a->setEnable(false); // a->applyForce( Vect(100, 78) ); } if (PIETRA_TAG == b->getTag() ){ // cocos2d::log("GameSceneQuattro::onContactBegin ....... 2 "); b-> getNode()->stopAllActions(); b-> getNode()->setVisible(false); b->removeFromWorld(); // b->setEnable(false); // b->applyForce( Vect(100, 78) ); } CCLOG("Forse megio cosi recupero i tag e poi faccio tutto" ); auto sp = (Sprite*)contact.getShapeA()->getBody()->getNode(); int tag = sp->getTag(); CCLOG("onContactBegin tag di A : %d", tag); auto spb = (Sprite*)contact.getShapeA()->getBody()->getNode(); int tagb = spb->getTag(); CCLOG("onContactBegin tag di B : %d", tagb); return true; }
bool Tutorial::onContactBegin(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); auto nodeA = contact.getShapeA()->getBody()->getNode(); auto nodeB = contact.getShapeB()->getBody()->getNode(); if (nodeA && nodeB) { if (nodeA->getTag() == 10) { if (nodeB->getTag() == 30) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/scoreSound.mp3"); nodeB->removeFromParentAndCleanup(true); } else if (nodeB->getTag() == 40) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/invisCollected.mp3"); nodeB->removeFromParentAndCleanup(true); powerUpBool = true; this->scheduleOnce(schedule_selector(Tutorial::DeactivatePowerUp), 4.0f); } else if (nodeB->getTag() == 50) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/speedboost.mp3"); nodeB->removeFromParentAndCleanup(true); speed -= true; this->scheduleOnce(schedule_selector(Tutorial::StopSpeed), 3.0f); } else if (nodeB->getTag() == 60) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/ScoreBoost.mp3"); nodeB->removeFromParentAndCleanup(true); } } else if (nodeA->getTag() == 30) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/scoreSound.mp3"); nodeA->removeFromParentAndCleanup(true); } else if (nodeA->getTag() == 40) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/invisCollected.mp3"); nodeA->removeFromParentAndCleanup(true); powerUpBool = true; this->scheduleOnce(schedule_selector(Tutorial::DeactivatePowerUp), 4.0f); } else if (nodeA->getTag() == 50) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/speedboost.mp3"); nodeA->removeFromParentAndCleanup(true); speed -= true; this->scheduleOnce(schedule_selector(Tutorial::StopSpeed), 3.0f); } else if (nodeA->getTag() == 60) { CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/ScoreBoost.mp3"); nodeA->removeFromParentAndCleanup(true); } } if ((0x000001 == a->getCollisionBitmask() && 0x000002 == b->getCollisionBitmask() || 0x000001 == b->getCollisionBitmask() && 0x000002 == a->getCollisionBitmask())) { if (powerUpBool == false) { this->scheduleOnce(schedule_selector(Tutorial::activateGameOverScene), 1.491f); CocosDenshion::SimpleAudioEngine::getInstance()->setEffectsVolume(0.85f); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/crashSound.mp3"); move = false; Crash(); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("audio/GameOver.mp3"); } } return true; }
bool LevelTwo::onContactBegin(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); auto nodeA = contact.getShapeA()->getBody()->getNode(); auto nodeB = contact.getShapeB()->getBody()->getNode(); if ((nodeA&&nodeB)) { if ((nodeA->getTag() == 21)) { if (nodeB->getTag() == 10) { playerOneDead = true; } } if ((nodeA->getTag() == 10)) { if (nodeB->getTag() == 21) { playerOneDead = true; } } //You'll have to check for collision between Jill and the platform and the platform and Jill //Collision between Jill and her endgame platform if ((nodeA->getTag() == 11)) { if (nodeB->getTag() == 8) { playerTwoEndGame = true; } } //Collision between the platform and Jill. if ((nodeA->getTag() == 8)) { if (nodeB->getTag() == 11) { playerTwoEndGame = true; } } if ((nodeA->getTag() == 7)) { //Collision between jack and his endGame platform if (nodeB->getTag() == 10) { playerOneEndGame = true; } } if ((nodeA->getTag() == 10)) { //Collision between jack and his endGame platform if (nodeB->getTag() == 7) { playerOneEndGame = true; } if (nodeB->getTag() == 20) { //trap->removeTrap(trap); //removeTraps = true; //m_traps-> //nodeB->removeFromParentAndCleanup(true); for (int i = 0; i < m_traps.size(); i++) { auto trap = m_traps.at(i); Director::getInstance()->getRunningScene()->removeChild(trap); //iter = m_projectiles.erase(iter); delete m_traps.at(i); //m_traps[i]->removeFromParentAndCleanup(true); addPlatfroms = true; } m_traps.clear(); //GameScreen::addPlatfroms = true; } } if ((nodeA->getTag() == 20)) { if (nodeB->getTag() == 10) { //nodeA->removeFromParentAndCleanup(true); } } //return addPlatfroms; } //check if the bodies have collided. if ((0x000001 == a->getCollisionBitmask() && 0x000016 == b->getCollisionBitmask()) || (0x000016 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { CCLOG("Collision has occured between Jack and the door!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); //this->scheduleOnce(schedule_selector(GameScreen::activateGameOverScene), 1.0f); playerOneEndGame = true; //playerTwoEndGame = true; } //check if the bodies have collided. if ((0x000002 == a->getCollisionBitmask() && 0x000017 == b->getCollisionBitmask()) || (0x000017 == a->getCollisionBitmask() && 0x000002 == b->getCollisionBitmask())) { CCLOG("Collision has occured between Jack and the door!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); //this->scheduleOnce(schedule_selector(GameScreen::activateGameOverScene), 1.0f); //playerOneEndGame = true; playerTwoEndGame = true; } if ((0x000001 == a->getCollisionBitmask() && 0x000005 == b->getCollisionBitmask()) || (0x000005 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { CCLOG("Collision has occured between jack and the button!"); for (int i = 0; i < m_traps.size(); i++) { auto trap = m_traps.at(i); sceneWorld->removeBody(trap->getPhysicsBody()); Director::getInstance()->getRunningScene()->removeChild(trap); m_traps[i]->removeFromParentAndCleanup(true); } m_traps.clear(); addPlatfroms = true; //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000001 == a->getCollisionBitmask() && 0x000105 == b->getCollisionBitmask()) || (0x000105 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { CCLOG("Collision has occured between jack and the button!"); for (int i = 0; i < m_removablePlats.size(); i++) { auto removablePlatform = m_removablePlats.at(i); sceneWorld->removeBody(removablePlatform->getPhysicsBody()); Director::getInstance()->getRunningScene()->removeChild(removablePlatform); m_removablePlats[i]->removeFromParentAndCleanup(true); } m_removablePlats.clear(); addPlatfroms = true; //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000001 == a->getCollisionBitmask() && 0x000004 == b->getCollisionBitmask()) || (0x000004 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { //player->respawnPoint(player); playerOneDead = true; CCLOG("Collision has occured between jack and the trap!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000001 == a->getCollisionBitmask() && 0x000101 == b->getCollisionBitmask()) || (0x000101 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { //player->respawnPoint(player); playerOneDead = true; CCLOG("Collision has occured between jack and the fire1!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000001 == a->getCollisionBitmask() && 0x000102 == b->getCollisionBitmask()) || (0x000102 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { //player->respawnPoint(player); playerOneDead = true; CCLOG("Collision has occured between jack and the fire2!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000001 == a->getCollisionBitmask() && 0x000103 == b->getCollisionBitmask()) || (0x000103 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask())) { //player->respawnPoint(player); playerOneDead = true; CCLOG("Collision has occured between jack and the fire3!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000002 == a->getCollisionBitmask() && 0x000004 == b->getCollisionBitmask()) || (0x000004 == a->getCollisionBitmask() && 0x000002 == b->getCollisionBitmask())) { //player->respawnPoint(player); playerTwoDead = true; CCLOG("Collision has occured between jack and the trap!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } if ((0x000002 == a->getCollisionBitmask() && 0x000001 == b->getCollisionBitmask()) || (0x000001 == a->getCollisionBitmask() && 0x000002 == b->getCollisionBitmask())) { //player->respawnPoint(player); playersColliding = true; CCLOG("Collision has occured between jack and Jill!"); //pButton->setSpriteFrame(ptr->m_buttonPressed); } else playersColliding = false; return true; }
bool GameScene::setHit(cocos2d::PhysicsContact &contact) { PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); if ((1 == a->getCollisionBitmask() && 2 == b->getCollisionBitmask()) || (2 == a->getCollisionBitmask() && 1 == b->getCollisionBitmask()))// BACK TO FRONT FOR NOW { bool hit = true; CCLOG(" A Collision has occured"); } else { bool hit = false; } if (hit = true) { if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { Ball::sharedBall()->AddToDampening(5000.0f); } if ((a->getCollisionBitmask() == Brick_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Brick_Bitmask)) { Ball::sharedBall()->AddToDampening(5000.0f); GameManager::sharedGameManager()->AddToScore(1); this->removeChild(contact.getShapeB()->getBody()->getNode()); Ball::sharedBall()->AddToAcceleration(5000); //ScoreLabel->setString(StringUtils::format("%d", GameManager::sharedGameManager()->GetScore())); Vec2 first = contact.getShapeA()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); Vec2 Second = contact.getShapeA()->getBody()->getNode()->convertToWorldSpace(Vec2(50, 50)); //CCLOG("X: %f",x); //CCLOG("Y: %f", y); //CCLOG("position = (%f,%f)", x, y); x = first.x; y = first.y; xb = Second.x; yb = Second.y; CCLOG("position = (%f,%f)", first.x, first.y); this->schedule(schedule_selector(GameScene::SetPowerUp)); if (level == 1) { number = number + 1; CCLOG("number = %i", number); if (number == 5) { CCLOG("level 2"); level = 2; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); } } else if (level == 2) { number = number + 1; if (number == 5) { level = 3; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); } } else if (level == 3) { number = number + 1; if (number == 5) { level = 4; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); } } else if (level == 4) { number = number + 1; if (number == 5) { level = 5; this->removeChild(contact.getShapeA()->getBody()->getNode()); this->schedule(schedule_selector(GameScene::SetBrick)); this->schedule(schedule_selector(GameScene::SetBall)); } } } //LIFE if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == LiveUp_Bitmask) || (a->getCollisionBitmask() == LiveUp_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { GameManager::sharedGameManager()->AddToLives(1); ba = 1; this->removeChild(contact.getShapeA()->getBody()->getNode()); } //TWO if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == TwoSplit_Bitmask) || (a->getCollisionBitmask() == TwoSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); ba = 2; this->schedule(schedule_selector(GameScene::SetBall)); } //THREE if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == ThreeSplit_Bitmask) || (a->getCollisionBitmask() == ThreeSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); ba = 3; this->schedule(schedule_selector(GameScene::SetBall)); } //FOUR if ((a->getCollisionBitmask() == Paddle_Bitmask && b->getCollisionBitmask() == NineSplit_Bitmask) || (a->getCollisionBitmask() == NineSplit_Bitmask && b->getCollisionBitmask() == Paddle_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); ba = 9; this->schedule(schedule_selector(GameScene::SetBall)); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == Ball_Bitmask) || (a->getCollisionBitmask() == Ball_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { GameManager::sharedGameManager()->AddToLives(-1); this->lives = GameManager::sharedGameManager()->GetLives(); if (lives == 0) { auto scene = HelloWorld::createScene(); Director::getInstance()->replaceScene(TransitionFade::create(Transition_Length, scene)); } this->removeChild(contact.getShapeA()->getBody()->getNode()); ba = 1; this->schedule(schedule_selector(GameScene::SetBall)); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == LiveUp_Bitmask) || (a->getCollisionBitmask() == LiveUp_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == TwoSplit_Bitmask) || (a->getCollisionBitmask() == TwoSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == ThreeSplit_Bitmask) || (a->getCollisionBitmask() == ThreeSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } if ((a->getCollisionBitmask() == Death_Bitmask && b->getCollisionBitmask() == NineSplit_Bitmask) || (a->getCollisionBitmask() == NineSplit_Bitmask && b->getCollisionBitmask() == Death_Bitmask)) { this->removeChild(contact.getShapeA()->getBody()->getNode()); } } return true; }
//response to contact with obstacle bool GameScene::onContactBegin(cocos2d::PhysicsContact &contact){ PhysicsBody *a = contact.getShapeA()->getBody(); PhysicsBody *b = contact.getShapeB()->getBody(); //if something colides with something else if ((BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == b->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == a->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && ROCKS_COLLISION_BITMASK == b->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && ROCKS_COLLISION_BITMASK == a->getCollisionBitmask()) /*|| (BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && EDGE_COLLISION_BITMASK == b->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && EDGE_COLLISION_BITMASK == a->getCollisionBitmask())*/){ CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("Sounds/Hit.mp3"); CCParticleSystemQuad* p = CCParticleSystemQuad::create("burn.plist"); p->setPosition(bird->getPosX(), bird->getPosY()); this->addChild(p); auto scene = GameOverScene::createScene(score); Director::getInstance()->replaceScene(TransitionFade::create(TRANSITION_TIME, scene)); //output score on death // CCLOG("SCORE: %i", score); no need to write to output, score in game //end bkg music CocosDenshion::SimpleAudioEngine::getInstance()->stopBackgroundMusic(); } else if ((BIRD_COLLISION_BITMASK == a->getCollisionBitmask() && POINT_COLLISION_BITMASK == b->getCollisionBitmask()) || (BIRD_COLLISION_BITMASK == b->getCollisionBitmask() && POINT_COLLISION_BITMASK == a->getCollisionBitmask())) { // CCLOG("Point Scored");no longer needed to write to output if (a->getCollisionBitmask() == POINT_COLLISION_BITMASK) { a->getNode()->removeFromParent(); } else { b->getNode()->removeFromParent(); CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("Sounds/Point.mp3"); score++; __String *tempScore = __String::createWithFormat("%i", score); scoreLabel->setString(tempScore->getCString()); } } else if ((EDGE_COLLISION_BITMASK == a->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == b->getCollisionBitmask()) || (EDGE_COLLISION_BITMASK == b->getCollisionBitmask() && OBSTACLE_COLLISION_BITMASK == a->getCollisionBitmask()) || (EDGE_COLLISION_BITMASK == a->getCollisionBitmask() && ROCKS_COLLISION_BITMASK == b->getCollisionBitmask()) || (EDGE_COLLISION_BITMASK == b->getCollisionBitmask() && ROCKS_COLLISION_BITMASK == a->getCollisionBitmask()) || (POINT_COLLISION_BITMASK == a->getCollisionBitmask() && EDGE_COLLISION_BITMASK == b->getCollisionBitmask()) || (POINT_COLLISION_BITMASK == b->getCollisionBitmask() && EDGE_COLLISION_BITMASK == a->getCollisionBitmask())){ //remove sprites as they remove from screen if (a->getCollisionBitmask() == EDGE_COLLISION_BITMASK){ CCParticleSystemQuad* p = CCParticleSystemQuad::create("debris_2.plist"); p->setPosition(b->getNode()->getPosition()); this->addChild(p); //if (frstContact == false){ // auto alienSize = Sprite::create("Alien.png"); // CCParticleSystemQuad* p = CCParticleSystemQuad::create("debris.plist"); // p->setPosition(b->getNode()->getPosition() + alienSize->getContentSize() / 2); // this->addChild(p); // frstContact = true; //} b->getNode()->removeFromParent(); } else{ CCParticleSystemQuad* p = CCParticleSystemQuad::create("debris_2.plist"); p->setPosition(b->getNode()->getPosition()); this->addChild(p); //if (frstContact == false){ // auto alienSize = Sprite::create("Alien.png"); // CCParticleSystemQuad* p = CCParticleSystemQuad::create("debris.plist"); // p->setPosition(b->getNode()->getPosition() + alienSize->getContentSize() / 2); // this->addChild(p); // frstContact = true; //} a->getNode()->removeFromParent(); } } return true; }