Exemple #1
0
Animate*Tower_Cuttle::getAttackAction()
{

	string str = "";



	switch (level)
	{
	case 1:
	{
			  str = "Cuttle1";


	}break;
	case 2:
	{
			  str = "Cuttle2";
	}break;
	case 3:
	{
			  str = "Cuttle3";
	}break;
	}





	auto ani = Animation::create();
	//ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "1.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "2.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "3.png"));


	ani->setDelayPerUnit(0.05);
	ani->setRestoreOriginalFrame(true);
	ani->setLoops(1);

	auto an = Animate::create(ani);
	return an;


}
void HeroFrog::initAnimation(){
    for (int i=0; i<9; i++) {
        auto animationStatic = Animation::create();
        for( int j=0;j<animationCount[i];j++)
        {
            char szName[100] = {0};
            sprintf(szName, animaFrameName[i].c_str(), j);
            SpriteFrame* frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(szName);
            animationStatic->addSpriteFrame(frame);
        }
        // should last 2.8 seconds. And there are 14 frames.
        animationStatic->setDelayPerUnit(0.2f);
        animationStatic->setRestoreOriginalFrame(false);
        AnimationCache::getInstance()->addAnimation(animationStatic, animaName[i]);
    }
    
    setHeroStatus(frogStatic);
 
}
Action *edcHeroLayer::setHeroAnim(char *aaname,int aaframes,float delayTime)
{
    auto animation = Animation::create();
    for( int i = 1; i <= aaframes ; i++)
    {
        char szName[100] = {0};
//        sprintf(szName, "snake_chick_up_%04d.png", i);
        sprintf(szName,"%s%04d%s",aaname,i,".png");
//        CCLOG("%s",szName);
        auto temp = Sprite::createWithSpriteFrameName(szName);
        animation->addSpriteFrame(temp->getSpriteFrame());
    }
    // should last 0.6 seconds. And there are 4 frames.
    animation->setDelayPerUnit(delayTime / (float)(aaframes));
    animation->setRestoreOriginalFrame(true);
    Action *temp = RepeatForever::create(Animate::create(animation));

    return temp;
}
Exemple #4
0
void Monster_UI::runRocketBoomAction()
{


	auto	sprite_boom = Sprite::create();
	sprite->addChild(sprite_boom);


	auto ani = Animation::create();
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket01.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket02.png"));

	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-11.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-12.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-13.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-14.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-15.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PRocket-16.png"));

	ani->setDelayPerUnit(0.05);
	ani->setRestoreOriginalFrame(false);
	ani->setLoops(-1);


	sprite_boom->runAction(Animate::create(ani));



	sprite_boom->setVisible(true);

	sprite_boom->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height / 2);

	sprite_boom->runAction(Sequence::create(DelayTime::create(0.4), CallFunc::create([=]()
	{
		sprite_boom->removeFromParentAndCleanup(true);
	}), nullptr));





}
Exemple #5
0
void Mainplan::addAnimation()
{
	//加载飞机动画。
	auto anim = Animation::create();
	SpriteFrame *sf;
	//通过桢缓存名字动画 加入第一帧
	sf =SpriteFrameCache::getInstance()->getSpriteFrameByName("hero_fly_1.png");
	anim->addSpriteFrame(sf);
	//加入第二帧
	sf =SpriteFrameCache::getInstance()->getSpriteFrameByName("hero_fly_2.png");
	anim->addSpriteFrame(sf);
	//设置帧循环播放次数  -1代表无限循环
	anim->setLoops(-1);
	//设置帧播放的间隔
	anim->setDelayPerUnit(0.01f);
	//根据anim序列创建anim动画an 
	auto an =Animate::create(anim);
	//让飞机运行帧动画
	this->runAction(an);
}
void GuanacasteScene::campFire()
{
    //carga el objeto del mapa
    auto Fogata = objetos->getObject("Fogata");
    CCASSERT(!Fogata.empty(), "Fogata object not found");
    //saco las coordenadas del objeto en el tilemap
    //se hace la suma debido al error en cocos2d
    float x = Fogata["x"].asFloat()+315;
    float y = Fogata["y"].asFloat()+28;
    //Crea el sprite y lo posiciona
    SFogata = Sprite::create("Animations/CampFire.png", Rect(0, 0,64,64));
    SFogata->setPosition(CC_POINT_PIXELS_TO_POINTS(Point(x,y)));
    //crea la animacion de la fogata
    auto animation = Animation::create();
    for ( int i = 0; i < 5; ++i )
    animation->addSpriteFrame(SpriteFrame::create("Animations/CampFire.png", Rect(i*64, 0,64,64)));
        animation->setDelayPerUnit( 0.1333f );
        auto repeatAnimation = RepeatForever::create( Animate::create(animation) );
        SFogata->runAction(repeatAnimation);
}
void MonsterSprite::move(){
    auto animation=Animation::create();
    __String *anStr1=_actionName.clone();
    __String *anStr2=_actionName.clone();
    anStr1->append("1.png");
    anStr2->append("2.png");
    SpriteFrame *spf1=SpriteFrameCache::getInstance()->getSpriteFrameByName(anStr1->getCString());
    SpriteFrame *spf2=SpriteFrameCache::getInstance()->getSpriteFrameByName(anStr2->getCString());

    animation->addSpriteFrame(spf1);
    animation->addSpriteFrame(spf2);
    animation->setDelayPerUnit(0.5f);
    animation->setRestoreOriginalFrame(true);
    
    auto moveAc= Animate::create(animation);
    
    moveAction=Repeat::create(moveAc, 100);
    this->runAction(moveAction);

}
Exemple #8
0
void Skill::thunder()
{
	log("thunder...");
	Player* player = Player::getInstance();
	if (!player->getThundering())
	{
		player->thunder();
		auto animationCache = AnimationCache::getInstance();
		// check if already loaded
		auto animation = animationCache->getAnimation("skill_thunder");
		if (!animation)
		{
			auto spriteFrameCache = SpriteFrameCache::getInstance();
			animation = Animation::create();
			animation->setDelayPerUnit(0.1f);
			//put frames into animation
			for (int i = 0; i < 8; i++)
			{
				animation->addSpriteFrame(spriteFrameCache->getSpriteFrameByName(String::createWithFormat("thunder_%d.png", i)->getCString()));
			}
			// put the animation into cache
			animationCache->addAnimation(animation, "skill_thunder");
		}
		float x = (SIZE_WIDTH - 100) / 6;
		float y = (SIZE_HEIGHT - 80) / 8;
		for (int i = 0; i < 3; i++)
		{
			for (int j = 0; j < 4; j++)
			{
				Sprite* thunder = Sprite::createWithSpriteFrameName("thunder_0.png");
				thunder->setPosition(50 + x * (i * 2 + 1), 40 + y * (j * 2 + 1));
				thunder->setRotation(15);
				this->getParent()->addChild(thunder);
				_thunders.pushBack(thunder);
				thunder->runAction(Sequence::create(Repeat::create(Animate::create(animation), 10), 
					CallFuncN::create(CC_CALLBACK_1(Skill::thunderEnd, this)), NULL));
			}
		}
		this->getParent()->schedule(CC_CALLBACK_1(Skill::thundering, this), 1, "thudering");
	}	
}
Exemple #9
0
void HelloWorld::resetPlayer() {
	isPlayerDie = true;        //플레이어가 죽음
	SimpleAudioEngine::getInstance()->playEffect("explosion.wav");
	auto sPlayer = (Sprite*)getChildByTag(TAG_SPRITE_PLAYER);
	sPlayer->setVisible(false);            //플레이어가 죽었으므로 플레이어를 지움


	auto spr = Sprite::create();        //플레이어가 죽을때 애니메이션 생성
	spr->setPosition(sPlayer->getPosition());
	this->addChild(spr, 2);

	auto ani = Animation::create();
	ani->setDelayPerUnit(0.05f);
	auto texture = Director::getInstance()->getTextureCache()->addImage("Explosion.png");    //통짜 이미지를 텍스쳐로 잘라서 사용
	for (int i = 0; i < 11; i++) {
		ani->addSpriteFrameWithTexture(texture, Rect(i % 5 * 160, i / 5 * 160, 160, 160));    //Explosion.png를 잘라서 순차적으로 사용
	}
	auto animate = Animate::create(ani);
	spr->runAction(animate);

	spr->runAction(Sequence::create(
		DelayTime::create(0.55f),
		RemoveSelf::create(),
		CallFunc::create(CC_CALLBACK_0(HelloWorld::setGameover, this)),
		NULL));

	count = 0;
	this->unschedule(schedule_selector(HelloWorld::setMissile));
	this->unschedule(schedule_selector(HelloWorld::upGradeP2));
	this->unschedule(schedule_selector(HelloWorld::upGradeP3));
	this->unschedule(schedule_selector(HelloWorld::upGradeP4));
	this->unschedule(schedule_selector(HelloWorld::upGradeF2));
	this->unschedule(schedule_selector(HelloWorld::upGradeF3));
	this->unschedule(schedule_selector(HelloWorld::upGradeF4));
	this->unschedule(schedule_selector(HelloWorld::upGradeL2));
	this->unschedule(schedule_selector(HelloWorld::upGradeL3));
	this->unschedule(schedule_selector(HelloWorld::upGradeL4));
	this->unschedule(schedule_selector(HelloWorld::ChargeMissile));

}
Exemple #10
0
void Level01::animCache()
{
	anim1 = Animation::create();
	anim1->addSpriteFrameWithFileName("img/player02.png");
	anim1->addSpriteFrameWithFileName("img/player03.png");
	anim1->addSpriteFrameWithFileName("img/player04.png");
	anim1->setLoops(1);
	anim1->setDelayPerUnit(0.2f);
	anim1->setRestoreOriginalFrame(true);

	auto standAnim = Animation::create();
	standAnim->addSpriteFrameWithFileName("img/player01.png");
	standAnim->addSpriteFrameWithFileName("img/player01-2.png");
	standAnim->addSpriteFrameWithFileName("img/player01-3.png");
	standAnim->setLoops(1);
	standAnim->setDelayPerUnit(0.7f);
	standAnim->setRestoreOriginalFrame(true);

	m_animCache = AnimationCache::getInstance();
	m_animCache->addAnimation(anim1, "walking");
	m_animCache->addAnimation(standAnim, "stand");
}
void HelloWorld::createDragon() {
	auto texture = Director::getInstance()->getTextureCache()->addImage("Images/dragon_animation.png");
	auto animation = Animation::create();
	animation->setDelayPerUnit(0.1f);

	for (int i = 0; i < 6; i++) {
		int index = i % 4;
		int rowIndex = i / 4;

		animation->addSpriteFrameWithTexture(texture, Rect(index * 130, rowIndex * 140, 130, 140));
	}



	auto dragon = Sprite::createWithTexture(texture, Rect(0, 0, 130, 140));
	dragon->setPosition(Vec2(240, 160));
	this->addChild(dragon);

	auto animate = Animate::create(animation);
	auto rep = RepeatForever::create(animate);
	dragon->runAction(rep);
}
Exemple #12
0
void PlayRunLayer::loadFrame(){
    //节奏线碰撞时的动画效果
    auto animation = Animation::create();
    animation->addSpriteFrameWithFile("game/play/hitline_blink.png");
    animation->setDelayPerUnit(0.3f);
    animation->setRestoreOriginalFrame(true);
    AnimationCache::getInstance()->addAnimation(animation, "hitline_blink");
    
    //增加撞线
    auto mRhythm = ui::Scale9Sprite::create("game/play/hitline.png");
    mRhythm->setAnchorPoint(Vec2(0.5,0));
    mRhythm->setPosition(Vec2(gameConfig->impactLine, 0));
    mRhythm->setPreferredSize(Size(mRhythm->getContentSize().width,gameConfig->contentHeight-gameConfig->chordHeight));
    mRhythm->setTag(8001);
    this->addChild(mRhythm,3);

    //和弦区域的底图
    if(gameConfig->musicModel->getType()==MUSICMODEL_TYPE_CHORD){
        auto chordBanner = Sprite::create("game/play/chordbanner.png");
        chordBanner->setPosition(Vec2(0,gameConfig->contentWidth-gameConfig->chordHeight));
        this->addChild(chordBanner);
    }

    //弦间的高度
    int stringCount = 5;
    for (int i=0; i<6; i++) {
        float stringHeight = gameConfig->stringUnitHeight*stringCount;
        stringMap[i+1]=Value(stringHeight);
        
        ui::Scale9Sprite *mString = ui::Scale9Sprite::create("game/play/string.png");
        mString->setPreferredSize(Size(Vec2(gameConfig->contentWidth, mString->getContentSize().height)));
        //设置弦的位置 Y轴:距离下边界的位置+弦的位置
        mString->setPosition(Vec2(gameConfig->contentWidth/2,gameConfig->stringSideHeight+stringHeight));
        this->addChild(mString,1);
        
        stringCount-=1;
    }
}
bool Thunder::init()
{
    if (!Entity::init())
        return false;

    auto animation = Animation::create();

    //auto anisprite = Sprite::create("Thunder/Thunder_Picture.png");
    //SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Sprite/Thunder/Thunder_Picture.plist", anisprite->getTexture());

    char szName[100];
    for (int i = 1; i <= 10; ++i)
    {
        sprintf(szName, "Thunder/thunder%02d.png", i);
        animation->addSpriteFrameWithFile(szName);
    }

    animation->setDelayPerUnit(0.05);
    animation->setLoops(1);

    auto sprite = Sprite::create();
    auto animate = Animate::create(animation);
    auto deadFunc = CallFunc::create([this]() {
        this->removeFromParent();
    });
    auto sequence = Sequence::create(animate, deadFunc, NULL);
    sprite->setScale(0.2);
    sprite->setAnchorPoint(Vec2(0.5, 0.05));
    sprite->setPositionY(-20.0);
    sprite->runAction(sequence);

    this->addChild(sprite);

    this->scheduleUpdate();

    return true;
}
Exemple #14
0
void Thing::addAnimations()
{
	const std::string animationName = this->getAnimationNameByType(AnimationType::IDLE);
	auto animation = AnimationCache::getInstance()->getAnimation(animationName);
	if(animation)
		return;

	int i = 0;
	for( auto iter = _animations.begin(); iter != _animations.end(); iter++, i++)
	{
		auto animation = Animation::create();
		animation->setDelayPerUnit(0.2f);

		for( int j=0; j < _animationFrameNum[i]; j++ )
		{
			auto sfName = String::createWithFormat("%s-%d-%d.png", _name.c_str(), i+1, j+1)->getCString();
			animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(sfName));
		}

		//put the animation into cache
		const std::string animName = this->getAnimationNameByType(*iter);
		AnimationCache::getInstance()->addAnimation(animation, animName);
	}
}
void RoleEmemyBig::down() {
	log("RoleEmemyBig, down------------->");

	auto animation = Animation::create();
	animation->setDelayPerUnit(0.2f);
	animation->addSpriteFrame(
			SpriteFrameCache::getInstance()->getSpriteFrameByName(
					"hero_blowup_n1.png"));
	animation->addSpriteFrame(
			SpriteFrameCache::getInstance()->getSpriteFrameByName(
					"hero_blowup_n2.png"));
	animation->addSpriteFrame(
			SpriteFrameCache::getInstance()->getSpriteFrameByName(
					"hero_blowup_n3.png"));
	animation->addSpriteFrame(
			SpriteFrameCache::getInstance()->getSpriteFrameByName(
					"hero_blowup_n4.png"));

	auto animate = Animate::create(animation);
	auto remove = CallFunc::create(
			CC_CALLBACK_0(RoleEmemyBig::doRemoveSelf, this, this));
	auto sequence = Sequence::create(animate, remove, nullptr);
	runAction(sequence);
}
Tower_Rocket_Bullet::Tower_Rocket_Bullet(int lev, Node*p, float rotation, Vec2 pos_tower, Vec2 pos)/*scene ,属于某个tower ,目标位置*/
{

    isDone = false;

    string str = "";

    float pos_x = 0, pos_y = 0;


    pos_y = 1200 * cos(rotation*3.14159 / 180.0);
    pos_x = 1200 * sin(rotation*3.14159 / 180.0);


    switch (lev)
    {
    case 1:
    {
        str = "PRocket11.png";


    }
    break;
    case 2:
    {
        str = "PRocket21.png";
    }
    break;
    case 3:
    {
        str = "PRocket31.png";
    }
    break;
    }


    initTowerBulletBase(lev);

    sprite = Sprite::createWithSpriteFrameName(str);
    p->addChild(sprite);

    sprite->setPosition(pos_tower);


    sprite->runAction(MoveBy::create(1.8, Vec2(pos_x, pos_y)));
    sprite->setRotation(rotation);

    sprite;;




    switch (lev)
    {
    case 1:
    {
        str = "PRocket1";
    }
    break;
    case 2:
    {
        str = "PRocket2";
    }
    break;
    case 3:
    {
        str = "PRocket3";
    }
    break;
    }


    auto ani = Animation::create();


    ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "1.png"));
    ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "2.png"));
    ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "3.png"));
    ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "4.png"));
    ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName(str + "5.png"));

    ani->setDelayPerUnit(0.05);
    ani->setRestoreOriginalFrame(true);
    ani->setLoops(-1);

    sprite->runAction(Animate::create(ani));



}
Exemple #17
0
void RunnerSprite::extralInit(){
    auto roleGroup = this->mMap->getObjectGroup("role");
    ValueMap obj = static_cast<ValueMap>(roleGroup->getObject("player"));
    
    float spX = obj["x"].asFloat();
    float spY = obj["y"].asFloat();

    SpriteFrameCache::getInstance()->addSpriteFramesWithFile("playerrun.plist", "playerrun.png");
    mRunner = cocos2d::Sprite::createWithSpriteFrameName("image1.png");
    mRunner->setPosition(Vec2(spX,spY));
    mRunner->setAnchorPoint(Vec2(0.5,0.0));
    
    mMap->addChild(mRunner);
    auto runAnim = Animation::create();
    for(int i = 1;i<17;i++){
        char nameBuf[100] = {0};
        sprintf(nameBuf, "image%d.png",i);
        auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(nameBuf);
        runAnim->addSpriteFrame(frame);
    }
    runAnim->setDelayPerUnit(0.06f);
    runAnim->setRestoreOriginalFrame(true);
    AnimationCache::getInstance()->addAnimation(runAnim,"runAction");
    
    
    
    auto colGroup = mMap->getObjectGroup("collision");
    auto colObj = colGroup->getObjects();
    CCLOG("objs %lu",colObj.size());
    
    barriers.reserve(colObj.size());
    
    for(ValueVector::iterator it  = colObj.begin(); it != colObj.end(); ++it) {
        ValueMap mp = it->asValueMap();
        barriers.push_back(Rect(mp["x"].asFloat(), mp["y"].asFloat(), mp["width"].asFloat(), mp["height"].asFloat()));
    }
    
    auto colGroup2 = mMap->getObjectGroup("collision");
    auto colObj2 = colGroup2->getObjects();
    CCLOG("objs %lu",colObj.size());
    
    goldens.reserve(colObj2.size());
    goldenSs.reserve(colObj2.size());
    int i = 0;
    for(ValueVector::iterator it  = colObj2.begin(); it != colObj2.end(); ++it) {
        ValueMap mp = it->asValueMap();
        goldens.push_back(Rect(mp["x"].asFloat(), mp["y"].asFloat(), mp["width"].asFloat(), mp["height"].asFloat()));
        auto gold =  Sprite::create("gold.png");
        gold->setAnchorPoint(Vec2(0.5,0.5));
        gold->setPosition(Vec2(mp["x"].asFloat(), mp["y"].asFloat() + 180));
        gold->setScale(0.2, 0.2);
        gold->setTag(2800+i);
        mMap->getLayer("ground")->addChild(gold);
        goldenSs.push_back(gold);
        i++;
    }
    
    
    setRunState(kROLERUN);
    
    auto runAim = RepeatForever::create(Animate::create(AnimationCache::getInstance()->getAnimation("runAction"))) ;
    this->mRunner->runAction(runAim);
    
    gNum = 0;
    mNum = 0;

}
bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    this->isGameOver = false;
    
    visibleSize = Director::getInstance()->getVisibleSize();
    
    // Ground setup
    groundSprite0 = Sprite::create("ground.png");
    this->addChild(groundSprite0);
    groundSprite0->setPosition(Vec2(groundSprite0->getContentSize().width/2.0 , groundSprite0->getContentSize().height/2));
    
    groundSprite1 = Sprite::create("ground.png");
    this->addChild(groundSprite1);
    groundSprite1->setPosition(Vec2(visibleSize.width + groundSprite1->getContentSize().width/2.0 -10, groundSprite1->getContentSize().height/2));
    
    auto groundbody0 = PhysicsBody::createBox(groundSprite0->getContentSize());
    groundbody0->setDynamic(false);
    groundbody0->setContactTestBitmask(true);
    groundSprite0->setPhysicsBody(groundbody0);
    auto groundbody1 = PhysicsBody::createBox(groundSprite1->getContentSize());
    groundbody1->setDynamic(false);
    groundbody1->setContactTestBitmask(true);
    groundSprite1->setPhysicsBody(groundbody1);
    
    // SkyGround setup
    Sprite *skySprite0 = Sprite::create("flappy_background.png");
    Sprite *skySprite1 = Sprite::create("flappy_background.png");
    Sprite *skySprite2 = Sprite::create("flappy_background.png");
    this->addChild(skySprite0);
    this->addChild(skySprite1);
    this->addChild(skySprite2);
    skySprite0->setPosition(visibleSize.width/2, 168 + 200);
    skySprite1->setPosition(visibleSize.width/2 - skySprite1->getContentSize().width, 168 + 200);
    skySprite2->setPosition(visibleSize.width/2 + skySprite1->getContentSize().width, 168 + 200);
    
    // bird setup
    /*
    Sprite *birdSprite = Sprite::create("flappybird1.png");
    this->addChild(birdSprite);
    birdSprite->setPosition(visibleSize.width/2, visibleSize.height/2 + 120);
    */

    SpriteFrameCache* cache = SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile("bird.plist");
    
    auto flyAnim = Animation::create();
    for (int i = 1; i < 4; i++) {
        SpriteFrame * frame = cache->getSpriteFrameByName("flappybird" + to_string(i) + ".png");
        flyAnim->addSpriteFrame(frame);
    }
    auto birdSprite = Sprite::createWithSpriteFrameName("flappybird1.png");

    flyAnim->setDelayPerUnit(0.2f);
    
    auto action = Animate::create(flyAnim);
    auto animation = RepeatForever::create(action);
    birdSprite->runAction(animation);
    
    birdSprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2 + 80));
    this->addChild(birdSprite);

    auto birdBody = PhysicsBody::createCircle(17.0);
    birdBody->setDynamic(true);
    birdBody->setMass(1.0f);
    birdBody->setVelocity(Vec2(4.0f, 2.0f));
    birdBody->setVelocityLimit(50);
    birdBody->setContactTestBitmask(true);
    birdSprite->setPhysicsBody(birdBody);
    
    //pipe setup
    topPipeSprite = Sprite::create("top_pipe.png");
    bottomPipeSprite = Sprite::create("bottom_pipe.png");
    topPipeSprite->setPosition(visibleSize.width + topPipeSprite->getContentSize().width/2, 600);
    
    auto pipebody0 = PhysicsBody::createBox(topPipeSprite->getContentSize());
    pipebody0->setDynamic(false);
    topPipeSprite->setPhysicsBody(pipebody0);
    pipebody0->setContactTestBitmask(true);
    auto pipebody1 = PhysicsBody::createBox(bottomPipeSprite->getContentSize());
    pipebody1->setDynamic(false);
    pipebody1->setContactTestBitmask(true);
    bottomPipeSprite->setPhysicsBody(pipebody1);
    
    this->positionBottomPipe();
    this->addChild(topPipeSprite);
    this->addChild(bottomPipeSprite);
    
    //setup touch listener
    auto listener = EventListenerTouchOneByOne::create();
    listener->setSwallowTouches(true);

    listener->onTouchBegan = [=](Touch *touch, Event *event){
        if (!this->isGameOver) {
            birdBody->applyImpulse(Vec2(0, 90.0f));
        }
        log("touch detected!");
        return true;
    };
    
    //setup collision listener
    auto plistener = EventListenerPhysicsContact::create();
    plistener->onContactBegin = [=](PhysicsContact &contact){
        log("collision detected!");
        auto gameOverSprite = Sprite::create("game_over.png");
        gameOverSprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
        this->addChild(gameOverSprite);
        this->isGameOver = true;
        
        auto restartListner = EventListenerTouchOneByOne::create();
        restartListner->setSwallowTouches(true);
        restartListner->onTouchBegan = [](Touch *touch, Event* event){
            Director::getInstance()->replaceScene(HelloWorld::createScene());
            return true;
        };
        Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(restartListner, gameOverSprite);
        return true;
    };
    
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(plistener, this);
    this->scheduleUpdate();
    
    return true;
}
Exemple #19
0
// 0~2のアニメーションを再生するメソッド(0通常、1上、2下)
//void型のPlayer::playAnimation(int index)関数を作成
void Player::playAnimation(int index)
{

	//もしも変数indexCheckと変数indexが等しかったら
	if (indexCheck == index) {
		//ここで関数の処理を終了する
		return;
	}

	// アニメーション用のタグを固定値で定義
	const int ACTION_TAG = 999; // 好きな数

	// 既にアニメーションが動いていたら止める
	// アニメーションには全て999のタグが付いてるはずなので、重複しないように止める
	this->stopActionByTag(ACTION_TAG);

	// cocos2d::Size型のframeSize変数で表示するかわずたんのスプライトのサイズを指定?
	//Size(frameSize.width, frameSize.height)にそれぞれ16.0を代入している。型はfloat
	auto frameSize = Size(16.0, 24.0);

	//?
	//スプライトのX座標0、Y座標0(左上)から、16x16を切り出す?
	//Rectはx,y,width,heightの4つをとれる。矩形という意味
	this->setTextureRect(Rect(0, 0, frameSize.width, frameSize.height));

	//SpriteFrame*というテンプレートでframesという配列を宣言
	Vector<SpriteFrame*> frames;

	//変数iを宣言、0で初期化しiがFRAME_COUNT未満である時、変数iに1を加算し{}内の処理を行いループ
	//iがFRAME_COUNT未満でなくなった時にループを抜ける
	for (int i = 0; i < FRAME_COUNT; ++i)
	{
		// indexの値によってy座標を変える
		//cocos2d::SpriteFrame型のポイント変数frameを宣言
		//画像kawaz_shooting.pngを読み、frameSize.widthにiをかけ2コマアニメーションのループ
		//indexに16(frameSize.heightの値)をかけ、アニメーションを切り替え
		//frameSize.widthとframeSize.heightで表示する画像の大きさを指定?
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * i, index * frameSize.height, frameSize.width, frameSize.height));

		//配列framesの終わりにframeの値を挿入する
		frames.pushBack(frame);
	}
	auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, index * frameSize.height, frameSize.width, frameSize.height));
	frames.pushBack(frame);

	if (index == 2)
	{
		frames.clear();
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, 2 * frameSize.height, frameSize.width, frameSize.height));
		frames.pushBack(frame);
	}
	else if (index == 3)
	{
		frames.clear();
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * 2, 2 * frameSize.height, frameSize.width, frameSize.height));
		frames.pushBack(frame);
	}
	else if (index == 4)
	{
		frames.clear();
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(0, 3 * frameSize.height, frameSize.width, frameSize.height));
		frames.pushBack(frame);
	}
	else if (index == 5)
	{
		frames.clear();
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width, 3 * frameSize.height, frameSize.width, frameSize.height));
		frames.pushBack(frame);
	}
	else if (index == 6)
	{
		frames.clear();
		auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * 2, 3 * frameSize.height, frameSize.width, frameSize.height));
		frames.pushBack(frame);
	}
	else if (index == 7)
	{
		frames.clear();
		for (int i = 0; i <= FRAME_COUNT; ++i)
		{
			auto frame = SpriteFrame::create("graphics/luk_sprite.png", Rect(frameSize.width * i, 96, frameSize.width, frameSize.height));
			frames.pushBack(frame);
		}
	}

	//cocos2d::Animation型のポインタ変数animationを宣言
	//配列framesを代入してるっぽいけどWithなんちゃらがよくわからない
	auto animation = Animation::createWithSpriteFrames(frames);
	if (index == 0)
	{
		animation->setDelayPerUnit(0.2);
	}
	else if (index == 7)
	{
		animation->setDelayPerUnit(0.3);
	}
	else
	{
		animation->setDelayPerUnit(0.1);
	}
	if (index != 7)
	{
		//cocos2d::RepeatForever型のポインタ変数animateを宣言 なんか闇っぽい
		//Animate::create(animation)でanimationで宣言された2コマアニメを生成してるとおもう
		//RepeatForeverは生成したアニメーションをを無限に繰り返す
		auto animate = RepeatForever::create(Animate::create(animation));

		//ポインタ変数animateにACTION_TAGというタグを設定
		animate->setTag(ACTION_TAG);

		//animateというアクションを走らせる
		this->runAction(animate);
	}
	else
	{
		auto clearAnimate = Animate::create(animation);

		clearAnimate->setTag(ACTION_TAG);
		this->runAction(clearAnimate);
	}

	//indexCheckにindexの値を代入する
	indexCheck = index;

}
Monster_fat_green::Monster_fat_green(int t_hp, Node*scene, Vec2 pos, queue<Vec2> que)
{

	string str = "fat_green01.png";


	initBase();
	hp = t_hp;
	hp_now = hp;

	queue_way = que;
	sprite = Sprite::createWithSpriteFrameName(str);
	scene->addChild(sprite);
	sprite->setPosition(pos);

	sprite;;


	Scene_UI*sce = (Scene_UI*)scene;

	menu = MenuItemSprite::create(Sprite::create("1.png"), Sprite::create("1.png"), [=](Ref*)
	{
		is_selected = !is_selected;

		if (is_selected)
		{
			for (int i = 0; i < sce->monster_queue.size(); i++)
			{
				;
				{
					((Bonus_UI*)sce->monster_queue[i])->sprite_selected->setVisible(false);
					((Bonus_UI*)sce->monster_queue[i])->is_selected = false;

				}

			}

			is_selected = true;
			sprite_selected->setVisible(true);
			return;
		}
		sprite_selected->setVisible(false);

	});
	menu->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height / 2);


	men = Menu::create(menu, nullptr);
	men->setPosition(0, 0);
	sprite->addChild(men);


	menu->setScale(sprite->getContentSize().height / 2.0 / 40.0);



	sprite_selected = Sprite::createWithSpriteFrameName("point01.png");

	{
		auto ani = Animation::create();
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point01.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point02.png"));
		ani->setDelayPerUnit(3.0 / 30.0);
		ani->setRestoreOriginalFrame(false);
		ani->setLoops(-1);

		sprite_selected->runAction(Animate::create(ani));
	}
	sprite_selected->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height);
	sprite->addChild(sprite_selected);
	sprite_selected->setVisible(false);








	hp_sprite_2 = Sprite::createWithSpriteFrameName("MonsterHP02.png");
	hp_sprite_2->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5));
	sprite->addChild(hp_sprite_2);



	hp_sprite_1 = Sprite::createWithSpriteFrameName("MonsterHP01.png");
	hp_sprite_1->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5));
	sprite->addChild(hp_sprite_1);



	hp_sprite_1->setAnchorPoint(Vec2(0, 0.5));


	hp_sprite_2->setAnchorPoint(Vec2(0, 0.5));


	hp_sprite_1->setVisible(false);
	hp_sprite_2->setVisible(false);

	hp_sprite_1->setScaleY(0.7);

	resetWay();

	auto ani = Animation::create();
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm01.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm02.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("mcm02.png"));


	ani->setDelayPerUnit(0.1);
	ani->setRestoreOriginalFrame(true);
	ani->setLoops(1);
	sprite->runAction(Animate::create(ani));


	/*
		hp_sprite_1;;
		hp_sprite_2;;
		*/





}
Exemple #21
0
Bonus_3_12::Bonus_3_12(Node*scene,Vec2 pos)
{
	string str = "cloud12.png";


	initBase();
	is_Bonus = true;


	Scene_UI*sce = (Scene_UI*)scene;
	menu = MenuItemSprite::create(Sprite::createWithSpriteFrameName(str), Sprite::createWithSpriteFrameName(str), [=](Ref*)
	{
		is_selected = !is_selected;

		if (is_selected)
		{
			for (int i = 0;i<sce->monster_queue.size();i++)
			{
				;
				{
					((Bonus_UI*)sce->monster_queue[i])->sprite_selected->setVisible(false);
					((Bonus_UI*)sce->monster_queue[i])->is_selected = false;

				}

			}

			is_selected = true;
			sprite_selected->setVisible(true);
			return;
		}
		sprite_selected->setVisible(false);

	});
	menu->setPosition(pos);
	menu;;




	 men = Menu::create(menu, nullptr);
	men->setPosition(0, 0);
	scene->addChild(men);


	sprite = Sprite::createWithSpriteFrameName(str);

	scene->addChild(sprite);
	sprite->setPosition(pos);
	sprite;;



	sprite_selected = Sprite::createWithSpriteFrameName("point01.png");

	{
		auto ani = Animation::create();
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point01.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("point02.png"));
		ani->setDelayPerUnit(3.0 / 30.0);
		ani->setRestoreOriginalFrame(false);
		ani->setLoops(-1);

		sprite_selected->runAction(Animate::create(ani));
	}
	sprite_selected->setPosition(sprite->getContentSize().width / 2, sprite->getContentSize().height);
	sprite->addChild(sprite_selected);
	sprite_selected->setVisible(false);

	



	hp_sprite_2 = Sprite::createWithSpriteFrameName("MonsterHP02.png");
	hp_sprite_2->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5));
	sprite->addChild(hp_sprite_2);
	hp_sprite_1 = Sprite::createWithSpriteFrameName("MonsterHP01.png");
	hp_sprite_1->setPosition(Vec2(sprite->getContentSize().width / 4, sprite->getContentSize().height - 5));
	sprite->addChild(hp_sprite_1);
	hp_sprite_1->setAnchorPoint(Vec2(0, 0.5));
	hp_sprite_2->setAnchorPoint(Vec2(0, 0.5));
	hp_sprite_1->setScaleY(0.7);




	sprite_effect_slow = Sprite::createWithSpriteFrameName("PShit-12.png");
	sprite->addChild(sprite_effect_slow);

	auto ani1 = Animation::create();
	ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png"));
	ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png"));

	ani1->setDelayPerUnit(0.1);
	ani1->setRestoreOriginalFrame(false);
	ani1->setLoops(-1);
	sprite_effect_slow->runAction(Animate::create(ani1));
	sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20);


	sprite_effect_slow->setVisible(false);



	hp_sprite_1->setVisible(false);
	hp_sprite_2->setVisible(false);
















	/*init Õ¼ÓÃλÖÃ*/

	queue_takeplace_pos.push_back(Vec2(PublicFunc::convertToX(pos.x),PublicFunc::convertToY(pos.y)));



	for (int i = 0;i<queue_takeplace_pos.size(); i++)
	{
		sce->data->push_back(queue_takeplace_pos[i]);
	}

}
Exemple #22
0
void Monster_UI::Destory(bool isKing)
{
	Scene_UI*scen = (Scene_UI*)sprite->getParent();

	playEffect();

	/*清楚所有 该怪物 为目标的炮塔 目标*/
	for (int i = 0; i < scen->tower_queue.size(); i++)
	{
		if (scen->tower_queue[i]->target == this)
		{
			scen->tower_queue[i]->setTarget(0);
		}
	}

	for (vector<Monster_UI*>::iterator it = scen->monster_queue.begin(); it != scen->monster_queue.end();)
	{
		if ((*it) == this)
		{
			scen->monster_queue.erase(it);
		}
		else
			++it;

	}
	auto ani = Animation::create();
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air01.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air02.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air03.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air04.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air05.png"));


	ani->setDelayPerUnit(0.1);
	ani->setRestoreOriginalFrame(false);
	ani->setLoops(1);

	sprite->removeAllChildrenWithCleanup(true);

	sprite->stopAllActions();


	char ss[100];
	if (money >= 10)
	{
		sprintf(ss, "money%d.png", money);
	}
	else
	{
		sprintf(ss, "money0%d.png", money);
	}


	if (isKing)
	{
		bonus = Sprite::create();

	}
	else
	{
		scen->view_up_menu->addMoney(money);
		bonus = Sprite::createWithSpriteFrameName(ss);

	}


	bonus->setPosition(sprite->getPosition());

	sprite->getParent()->addChild(bonus, 6);

	bonus->runAction(MoveBy::create(0.2, Vec2(0, 50)));

	auto an = Animate::create(ani);


	/*q c*/


	bonus;;




	sprite->runAction(Sequence::create(an, CallFunc::create([=]
	{
		sprite->removeFromParentAndCleanup(true);
		bonus->removeFromParentAndCleanup(true);

		delete this;

	}), nullptr));


}
Exemple #23
0
void Field::SetFieldSprite(FieldBlock fieldBlockData)
{
	HexaPoint anchor(fieldBlockData.position);
	auto iter = m_FieldSpriteMap.find(anchor);
	if (iter == m_FieldSpriteMap.end()) return;

	Sprite* fieldBlock = iter->second;
	char imgNameBuf[20];
	FieldBlockType fieldType = fieldBlockData.type;
	FieldBlockStatus fieldStatus = fieldBlockData.status;

	switch (fieldStatus)
	{
	case FBS_NONE:
		break;
	case FBS_NORMAL:
	{
		switch (fieldType)
		{
		case FBT_NORMAL:
		{
			//strcpy(imgNameBuf, "block_water.png");
			char* imgName = "block_grass";
			sprintf_s(imgNameBuf, "%s%d.png", imgName, rand() % 6 + 1);
			fieldBlock->setSpriteFrame(m_SpriteFrame->getSpriteFrameByName(imgNameBuf));
		}break;
		default:
			break;
		}
	}break;
	
	case FBS_HOLE:
	{
		strcpy(imgNameBuf, "sprite_none.png");
		fieldBlock->setTexture(imgNameBuf);
	}break;

	case FBS_WATER:
	{
					  
					  // 임시
					  strcpy(imgNameBuf, "sprite_none.png");
					  fieldBlock->setTexture(imgNameBuf);
					  break;

					  strcpy(imgNameBuf, "block_water.png");
					  auto spriteFrame = m_SpriteFrame->getSpriteFrameByName(imgNameBuf);
					  fieldBlock->setSpriteFrame(spriteFrame);
					  auto blockAnimation = m_AnimationList.at(FBT_WATER);
					  blockAnimation->setDelayPerUnit(0.15f);
					  fieldBlock->runAction(RepeatForever::create(Animate::create(blockAnimation)));
	}break;
	/*
	case FBS_COVER_WATER:
		fieldBlock->runAction(CCRepeatForever::create(CCAnimate::create(m_AnimationList.at(FBT_WATER))));
		break;
	*/
	default:
		break;
	}
	
	// TODO : 디버그할때 가끔 여기서 뻑남
	fieldBlock->setTexture(imgNameBuf);
	float scale = HEXAGON_LENGTH * 2 / fieldBlock->getContentSize().width;
	fieldBlock->setScale(scale);
	fieldBlock->setAnchorPoint(Vec2(0.5f, 0.65f));
	ScreenPoint screenPoint = HexaToScreen(anchor);
	fieldBlock->setPosition(screenPoint);

	return;
}
Exemple #24
0
void Level01::setBG()
{
	m_worldMap = Node::create();

	if (UserDefault::getInstance()->getBoolForKey("light"))
	{
		m_collision = m_visibleSize.width*0.3;
	}
	else
	{
		m_collision = -m_visibleSize.width*0.7;
	}

	Sprite* bg[3];

	for (int i = 0; i < 3; i++)
	{
		bg[i] = Sprite::create("img/background.png");

		// position the sprite on the center of the screen
		bg[i]->setScale(m_visibleSize.width / m_visibleSize.height);
		bg[i]->setPosition(Point((m_visibleSize.width) * i+1, m_visibleSize.height / 2));

		// add the sprite as a child to this layer
		m_worldMap->addChild(bg[i]);
	}

	createObjectOnFloor(bg[1]->getBoundingBox().getMidX()- 200, "img/chair.png");
	createObjectOnFloor(bg[1]->getBoundingBox().getMidX(), "img/chair.png");
	createObjectOnFloor(bg[1]->getBoundingBox().getMidX(), "img/table.png");
	createObjectOnFloor(bg[0]->getBoundingBox().getMidX(), "img/chair.png");

	auto drawing2 = Sprite::create("img/drawing01.png");
	drawing2->setScale(2);
	drawing2->setPosition(Vec2(m_visibleSize.width * 1.3, m_visibleSize.height / 1.4));
	//m_worldMap->addChild(drawing2);

	//m_doorList[2] = createDoor(m_visibleSize.width * 2.7);
	m_doorList[0] = createDoor(convertToNodeSpace(sprite->getPosition()).x);
	//m_doorList[1] = createDoor(m_visibleSize.width * 3.4);

	auto sadman  = Sprite::create("img/sadman01.png");
	sadman->setScale(1.8);
	sadman->setPosition(Vec2(m_visibleSize.width * 1.2 + 55, m_floorPoint + sadman->getBoundingBox().getMaxY()));
	m_worldMap->addChild(sadman);
	if (UserDefault::getInstance()->getBoolForKey("light"))
	{
		sadman->setVisible(true);
	}
	else
	{
		sadman->setVisible(false);
	}

	auto sadmanAnim = Animation::create();
	sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman01.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman02.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman03.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png");
	sadmanAnim->addSpriteFrameWithFileName("img/sadman04.png");
	sadmanAnim->setLoops(-1);
	sadmanAnim->setDelayPerUnit(0.3f);
	sadmanAnim->setRestoreOriginalFrame(true);

	auto sadmanAnimate = Animate::create(sadmanAnim);
	sadman->runAction(RepeatForever::create(sadmanAnimate));

	m_doorList[1] = sadman;

	this->addChild(m_worldMap);
}
Exemple #25
0
void  Tower_Pin::setLevel(int lev)
{
	sprite->stopAllActions();

	view_click = 0;


	switch (lev)
	{
	case 1:
	{
			  sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin11.png"));
			  sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-11.png"));
			  sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-11.png"));


	}break;
	case 2:
	{
			  sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin21.png"));
			  sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-12.png"));
			  sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-12.png"));


	}break;
	case 3:
	{
			  sprite->setSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("Pin31.png"));
			  sprite_base->setNormalImage(Sprite::createWithSpriteFrameName("Pin-13.png"));
			  sprite_base->setSelectedImage(Sprite::createWithSpriteFrameName("Pin-13.png"));

	}break;
	}


	if (lev == 1)
	{
		auto ani = Animation::create();
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air11.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air12.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air13.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air14.png"));
		ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air15.png"));


		ani->setDelayPerUnit(0.07);
		ani->setRestoreOriginalFrame(true);
		ani->setLoops(1);


		/* BUG  TMP FIX*/

		if (effect == 0)
		{

			effect = Sprite::create();
			effect->setPosition(sprite->getPosition());
			sprite->getParent()->addChild(effect);
			effect->runAction(Animate::create(ani));
		}
		else
		{
			effect->removeFromParentAndCleanup(true);

			effect = Sprite::create();
			effect->setPosition(sprite->getPosition());
			sprite->getParent()->addChild(effect);
			effect->runAction(Animate::create(ani));


		}
	}
	else
	{
		//if (this->level < lev)
		{

			auto ani = Animation::create();
			ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air11.png"));
			ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air12.png"));
			ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air13.png"));
			ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air14.png"));
			ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air15.png"));

			ani->setDelayPerUnit(0.03);
			ani->setRestoreOriginalFrame(true);
			ani->setLoops(1);





			/* BUG  TMP FIX*/

			if (effect == 0)
			{

				effect = Sprite::create();
				effect->setPosition(sprite->getPosition());
				sprite->getParent()->addChild(effect);
				effect->runAction(Animate::create(ani));
			}
			else
			{
				effect->removeFromParentAndCleanup(true);

				effect = Sprite::create();
				effect->setPosition(sprite->getPosition());
				sprite->getParent()->addChild(effect);
				effect->runAction(Animate::create(ani));


			}

		}
	}



	this->level = lev;
	initTowerBase();




}
Exemple #26
0
void  Tower_Pin::Destory()
{

	Scene_UI*sc = (Scene_UI*)sprite->getParent();

	for (vector<Tower_UI*>::iterator it = sc->tower_queue.begin(); it != sc->tower_queue.end();++it)
	{

		if ((*it) == this)
		{
			sc->tower_queue.erase(it);
			break;
		}
	}


	setClick(false);

	setTarget(0);

	for (int i = 0; i < bullet_queue.size(); i++)
	{
		bullet_queue[i]->Destory(target);

	}
	bullet_queue.clear();
	
	auto x = (Scene_UI*)sprite->getParent();

	x->data->pop(PublicFunc::convertToX(sprite->getPosition().x),
		PublicFunc::convertToY(sprite->getPosition().y));


	auto ani = Animation::create();
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air01.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air02.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air03.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air04.png"));
	ani->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("air05.png"));

	ani->setDelayPerUnit(0.1);
	ani->setRestoreOriginalFrame(true);
	ani->setLoops(1);
	auto an = Animate::create(ani);

	sprite_base->removeFromParentAndCleanup(true);
	effect->removeFromParentAndCleanup(true);
	sprite_upgrade->removeFromParentAndCleanup(true);


	sprite->runAction(Sequence::create(an, CallFunc::create([=]
	{
		sprite->removeFromParentAndCleanup(true);

		delete this;

	}), nullptr));



}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.
    
    auto lbl_title = LabelTTF::create("じゃんけんゲーム", "HiraKakuProN-W6", 30);
    lbl_title->setPosition(Point(origin.x +visibleSize.width/2,
                                 origin.y +visibleSize.height - lbl_title->getContentSize().height ));
    this->addChild(lbl_title);
    
    // グーだけの単一スプライトを表示する
    jangken_aite = Sprite::create("goo.png");
    jangken_aite->setPosition(Point(origin.x+visibleSize.width/2,
                                    origin.y+visibleSize.height
                                    - lbl_title->getContentSize().height
                                    - jangken_aite->getContentSize().height
                                    -20));
    this->addChild(jangken_aite);
    
    // アニメーションを生成する
    auto jangken_anime = Animation::create();
    jangken_anime->addSpriteFrameWithFile("choki.png");
    jangken_anime->addSpriteFrameWithFile("par.png");
    jangken_anime->addSpriteFrameWithFile("goo.png");
    jangken_anime->setDelayPerUnit(0.1f);
    jangken_anime->setLoops(-1);
    jangken_anime->setRestoreOriginalFrame(true);
    jangken_anime_run = (CCAnimate*)CCSequence::create(
                                                CCAnimate::create(jangken_anime),
                                                NULL);
    // アニメーション実行
    jangken_aite->runAction(jangken_anime_run);
    
    
    
    // じゃんけんボタンを追加
    auto btn_goo = MenuItemImage::create("goo.png", "goo.png", CC_CALLBACK_1(HelloWorld::pushGoo, this));
    auto btn_choki = MenuItemImage::create("choki.png", "choki.png", CC_CALLBACK_1(HelloWorld::pushChoki, this));
    auto btn_par = MenuItemImage::create("par.png", "par.png", CC_CALLBACK_1(HelloWorld::pushPar, this));
    
    btn_goo->setPosition(Point(origin.x + btn_goo->getContentSize().width/2 + 10,
                               origin.y + visibleSize.height/2 - 20));
    
    btn_choki->setPosition(Point(btn_goo->getPosition().x + btn_choki->getContentSize().width + 10,
                               origin.y + visibleSize.height/2 - 20));
    
    btn_par->setPosition(Point(btn_choki->getPosition().x + btn_par->getContentSize().width + 10,
                               origin.y + visibleSize.height/2 - 20));
    
    
    auto btns = Menu::create(btn_goo, btn_choki, btn_par, NULL);
    btns->setPosition(Point::ZERO);
    this->addChild(btns);
    
    
    
    // 乱数を初期化
    srand((unsigned)time(NULL));
    
    lbl_dis = LabelTTF::create("", "HiraKakuProN-W6", 30);
    lbl_dis->setPosition(Point(origin.x + visibleSize.width/2,
                               origin.y + 200));
    addChild(lbl_dis);
    
    
    return true;
}
Exemple #28
0
Tower_Ball::Tower_Ball(Node*scene, Vec2 pos, int lev)
{
	view_click = 0;
	count = 0;
	effect = 0;
	this->level = lev;

	cos_upgrade = 320;

	initTowerBase();
	sprite_bullet_effect = Sprite::create();
	sprite_bullet_effect;;


	sprite = Sprite::createWithSpriteFrameName("Ball11.png");

	sprite;;

	sprite_base = MenuItemSprite::create(Sprite::createWithSpriteFrameName("Ball11.png"), Sprite::createWithSpriteFrameName("Ball11.png")
		, [=](Ref*p)
	{
		if (view_click == 0)
		{
			((Scene_UI*)scene)->view_click_gloal->setAllVisFalse();

			view_click = new View_Click_Tower(4, this);
		}

	});

	sprite_base->setPosition(pos);
	sprite_bullet_effect->setPosition(pos);
	sprite_base;;

	auto ss = Menu::create(sprite_base, nullptr);
	ss->setPosition(0, 0);
	scene->addChild(ss);


	//Sprite::createWithSpriteFrameName("Bottle-11.png");



	scene->addChild(sprite);
	sprite->setPosition(pos);
	scene->addChild(sprite_bullet_effect);
	sprite_bullet_effect->setAnchorPoint(Vec2(0.5, 0));
	sprite_bullet_effect->setVisible(false);
	sprite_upgrade = Sprite::createWithSpriteFrameName("showupgrade02.png");

	scene->addChild(sprite_upgrade);
	sprite_upgrade->setPosition(sprite->getPositionX(), sprite->getPositionY() + sprite->getContentSize().height);
	auto ani2 = Animation::create();
	ani2->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("showupgrade02.png"));
	ani2->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("showupgrade01.png"));
	ani2->setDelayPerUnit(0.1);
	ani2->setRestoreOriginalFrame(false);
	ani2->setLoops(-1);
	sprite_upgrade->runAction(Animate::create(ani2));
	sprite_upgrade->setVisible(false);
	setLevel(lev);


}
Exemple #29
0
void  Monster_UI::set_effect_slow(int lev, int tag)
{
	if (effect_slow_lev > lev)return;/*等级高的减速 才算*/
	/*同等级 都会刷新减速时间*/
	/*减速等级高优先*/

	if (effect_slow_lev == 0)
	{

		sprite_effect_slow = Sprite::createWithSpriteFrameName("PShit-12.png");
		sprite->addChild(sprite_effect_slow);

		auto ani1 = Animation::create();
		ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png"));
		ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png"));

		ani1->setDelayPerUnit(0.1);
		ani1->setRestoreOriginalFrame(false);
		ani1->setLoops(-1);
		sprite_effect_slow->runAction(Animate::create(ani1));
		sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20);

		sprite_effect_slow->setVisible(false);
	}


	if (tag)
	{

		sprite_effect_slow->stopAllActions();

		auto ani1 = Animation::create();
		ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-12.png"));
		ani1->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("PShit-11.png"));

		ani1->setDelayPerUnit(0.1);
		ani1->setRestoreOriginalFrame(false);
		ani1->setLoops(-1);
		sprite_effect_slow->runAction(Animate::create(ani1));
		sprite_effect_slow->setPosition(sprite->getContentSize().width / 2, 20);

	}








	effect_slow_lev = lev;
	moveSpeed = moveSpeed_readOnly;
	is_effect_slow = true;
	sprite_effect_slow->setVisible(true);

	switch (lev)
	{
	case 1:
	{
			  moveSpeed /= 0.8;
	}
		break;
	case  2:
	{
			   moveSpeed /= 0.6;
	}
		break;
	case  3:
	{
			   moveSpeed /= 0.3;
	}
		break;
	}

	isDone = true;
	sprite->stopActionByTag(2);
	sprite->stopActionByTag(3);
	sprite->stopActionByTag(4);

	auto a4 = Sequence::create(DelayTime::create(1.0 + 0.5*lev), CallFunc::create([=]()
	{
		is_effect_slow = false;
		moveSpeed = moveSpeed_readOnly;
		isDone = true;
		sprite_effect_slow->setVisible(false);
		sprite->stopActionByTag(2);
		sprite->stopActionByTag(3);
		sprite->stopActionByTag(4);
		effect_slow_lev = 0;
		updateWay();

	}), nullptr);

	a4->setTag(4);
	sprite->runAction(a4);
}