參考鏈接
捕魚達人
中的閃電是通過一下步驟來實現的:
- 構建三角形條帶
- 采用隨機函數來擾亂條帶頂點
- 快速反復循環一,二操作
這個過程主要使用以下三個類:
- VertexVector : 用于存儲頂點和索引類
- Noise : 噪音處理類,用于進行頂點擾動,使頂點不斷小幅變化
- LightLineRender : 實現閃電效果類
觸屏時,一條閃電鏈擊中屏幕中間的烏龜,烏龜被擊中后翻了個身,閃電鏈漸漸消失:
//擊中烏龜
void FishLayer::AttackWuGui()
{
if (m_Animation3D)
{
//從1.933秒到2.8秒截取為受傷的動作
m_Hurt = Animate3D::create(m_Animation3D, 1.933f, 2.8f);
m_Hurt->retain();
m_Sprite->stopAllActions();
//讓精靈循環播放游泳和的受傷動作
Sequence* pSequence = Sequence::create(m_Hurt,CallFunc::create( std::bind(&FishLayer::ContinueSwim, this) ),NULL);
m_Sprite->runAction(pSequence);
}
}
//繼續游動
void FishLayer::ContinueSwim()
{
if (m_Animation3D)
{
//從起始到1.933秒截取為游泳動作
m_Swim = Animate3D::create(m_Animation3D, 0.f, 1.933f);
m_Swim->retain();
m_Sprite->stopAllActions();
//讓精靈循環播放游泳和的受傷動作
Sequence* pSequence = Sequence::create(m_Swim,NULL);
m_Sprite->runAction(RepeatForever::create(pSequence));
}
}