Billboard的使用及加動作Animation,billboardanimation
BillBoard的使用
auto root = Sprite3D::create();
root ->setNormalizedPosition(Vec2(.5,.25));
addChild(root);
BillBoard / Spawn / Sequence 的使用
auto mode1 = Sprite3D::create("Sprite3DTest/orc.c3b");
mode1->setScale(5);
mode1->setRotation3D(Vec3(0,180,0));
root->addChild(mode1);
auto bill = BillBoard::create();//BillBoard 廣告牌
bill->setPosition(0,120);
root->addChild(bill);
auto sp = Sprite::create("Images/SpookyPeas.png");
sp->setScale(2);
bill->addChild(sp);
auto lb1 = Label::create();
lb1->setPosition(0,30);
lb1->setString("+1000000000000000000000000000");
bill->addChild(lb1);
auto r = RotateBy::create(10,Vec3(0,360,0));
auto rp = RepeatForever::create(r);
root->runAction(rp);
auto jump = JumpBy::create(1,Vec2(0,0),30,1);
auto scale = ScaleBy::create(2,2,2,0.1);
auto seq = Sequence::create(jump,scale,nullptr);
auto rot = RotateBy::create(2,Vec3(-90,0,0));
auto act = Spawn::create(seq,rot ,NULL);//Spawn 同時動作
auto scale2 = scale->reverse();
auto rot2 = rot->reverse();
auto act2 = Spawn::create(scale2,rot2,NULL);
auto seq2 = Sequence::create(act,act2,NULL);//Sequence 順序動作
auto repeat =RepeatForever::create(seq2);
mode1->runAction(repeat);
Billboard 上加動作Animation
void HelloWorld::addNewAniBillBoardWithCoords(Vec3 p)
{
for (int i = 0; i < 10; ++i)
{
auto billboardAni = BillBoard::create("Images/grossini.png");
billboardAni->setScale(0.5f);
billboardAni->setPosition3D(Vec3(p.x,p.y,-150.0f +30 *i));
_layerBillBoard->addChild(billboardAni);
auto animation = Animation::create();
for (int i = 1; i < 15; i++)
{
char szName1[100] = {0};
sprintf(szName1,"Images/grossini_dance_%02d.png",i);
animation->addSpriteFrameWithFile(szName1);
}
animation->setDelayPerUnit(2.8f / 14.0f);//設定兩幀之間的時間間隔
animation->setRestoreOriginalFrame(true);//true: 動畫播放結束後,回到初始幀 false:動畫播放結束後,顯示最後一幀
auto action = Animate::create(animation);
billboardAni->runAction(RepeatForever::create(action));
billboardAni->setOpacity(CCRANDOM_0_1() * 128 + 128);
//設定透明度
_billboards.push_back(billboardAni);
}
}