コード例 #1
0
ファイル: GameLevel.cpp プロジェクト: wangyanxing/JumpProject
void GameLevel::dieImpl() {
  mDieFlag = false;

  pause();

  // Camera effect.
  getGameLayer()->getBlockRoot()->runAction(CameraShake::create(0.3f, 10));

  auto hero = getHero();

  // Particle effect.
  ParticleSystem *ps = ParticleSystemQuad::create(DIE_FX_NAME);
  ParticleBatchNode *batch = ParticleBatchNode::createWithTexture(ps->getTexture());
  batch->addChild(ps);
  batch->setPosition(hero->getRenderer()->getPosition());
  batch->setCameraMask((unsigned short) CameraFlag::USER2);
  mGameLayer->getBlockRoot()->addChild(batch, ZORDER_DIE_FX, DIE_FX_TAG);

  hero->getRenderer()->getNode()->runAction(Sequence::create(ScaleTo::create(0.2, 0.1, 0.1),
                                                             CallFunc::create([this] {
    getHero()->getRenderer()->setVisible(false);
  }), nullptr));

  mGameLayer->runAction(Sequence::create(DelayTime::create(0.5), CallFunc::create([this] {
    enableGame(false);
    enableGame(true);
  }), nullptr));
}
コード例 #2
0
ファイル: GameScene.cpp プロジェクト: DPC11/Knifes-game
void GameScene::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *unused_event)
{
    Vec2 size = Director::getInstance()->getVisibleSize();
    
    auto HandAnimation = Animation::createWithSpriteFrames(mHandAnimations, 0.05);
    auto HandAnimate = Animate::create(HandAnimation);
    mHandSprite->runAction(HandAnimate);

    if (mKnife == nullptr) return;
    
    CCLOG ("%f\n", mKnife->getKnife()->getPositionY());
    if (mKnife->isInCutterEdge())
    {
        
        // 失败脸部表情
        auto FaceAnimation = Animation::createWithSpriteFrames(mFaceAnimationFail, 1);
        auto FaceAnimate = Animate::create(FaceAnimation);
        mFaceSprite->runAction(FaceAnimate);
        
        MusicButton::getInstance()->playCatchCutterEdge();
        
        // 停止刀子
        mKnife->getKnife()->getPhysicsBody()->setVelocity(Vec2(0, 0));
        mKnife->getKnife()->getPhysicsBody()->setGravityEnable(false);
        
        // 流血效果
        ParticleSystem* BloodPar = ParticleSystemQuad::create("blood.plist");
        BloodPar->retain();
        ParticleBatchNode* BloodNode = ParticleBatchNode::createWithTexture(BloodPar->getTexture());
        BloodNode->addChild(BloodPar);
        BloodNode->setAnchorPoint(Vec2::ZERO);
        BloodNode->setPosition(Vec2(250, 300));
        addChild(BloodNode, 10);
        BloodPar->release();
        
        // NG
        scheduleOnce(schedule_selector(GameScene::gameOver), 1);
    }
    else if (mKnife->isInHilt())
    {
        // 成功脸部表情
        auto FaceAnimation = Animation::createWithSpriteFrames(mFaceAnimationSucc, 0.5);
        auto FaceAnimate = Animate::create(FaceAnimation);
        mFaceSprite->runAction(FaceAnimate);
        
        MusicButton::getInstance()->playCatchHilt();
        
        // 刀子动作
        mKnife->getKnife()->getPhysicsBody()->setVelocity(Vec2(0, 0));
        mKnife->getKnife()->getPhysicsBody()->setGravityEnable(false);
        auto KnifeMove = MoveTo::create(0.3, Vec2(Vec2(size.x-140, size.y-82)));
        auto KnifeScale = ScaleTo::create(0.4, 0.1);
        auto KnifeSpa = Spawn::create(KnifeMove, KnifeScale, NULL);
        mKnife->getKnife()->runAction(KnifeSpa);
        
        scheduleOnce(schedule_selector(GameScene::gotKnife), 0.5);
    }
    else
    {
        // Miss表情
        auto FaceAnimation = Animation::createWithSpriteFrames(mFaceAnimationMiss, 0.2);
        auto FaceAnimate = Animate::create(FaceAnimation);
        mFaceSprite->runAction(FaceAnimate);
    }
}