void HitMeScene::hitMeFire(Ref* sender) { Point velocity_delta = Point(CCRANDOM_0_1(), CCRANDOM_0_1()) * 300; velocity_delta = (CCRANDOM_0_1() < 0.5f)? velocity_delta : -velocity_delta; PhysicsBody* body = _hitItem->getPhysicsBody(); body->setVelocity(body->getVelocity() + velocity_delta); body->setAngularVelocity(body->getAngularVelocity() + 5.0f * CCRANDOM_0_1()); }
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; }