動作類遊戲,戰鬥類場景很常見,接下來幾篇文章,我將記錄用wiengine編寫遊戲的戰鬥場景。本文介紹boss相關的內容,包括boss動畫,boss的health bar等。先看幾個效果圖:
初始化時,boss為滿血。
攻擊兩次之後,boss的血剩餘1/3。
最後的致命一擊,boss顫抖幾下,然後**了。
使用texture packer進行動畫檔案的建立。texturepacker的操作介面如下:
匯出的檔名為:enemy.plist和enemy.png,在scene中載入貼圖集:
zm->addzwoptex("enemy", res("r.raw.enemy"), wytexture2d::makepng(res("r.drawable.enemy")));
使用貼圖集建立sprite的**如下:
boss = zm->makesprite("enemy_01.png");
在enemy類中,初始化動畫,**如下:
enum enemyactionstag ;
。。。。
actions[emy_run] = makeaction("enemy", zm, 4);
actions[emy_hit] = makeaction("enemy", zm, 4);
actions[emy_died] = makeaction("explode", zm, 16);
。。。。
wyaction* makeaction(const char* an, wyzwoptexmanager* zm, int num)
wyrepeatforever* rp = wyrepeatforever::make(wyanimate::make(anim));
rp->retain();
return rp;
}
boss的health bar的實現了運用了wiengine中的wyprogresstimer類來實現,其實這個類也是乙個sprite,它只是是對sprite的乙個封裝,賦予sprite進度條的功能,建立的**如下:
blood = wyprogresstimer::make(zm->makesprite("blood.png"));
blood->setstyle(horizontal_bar_lr); //設定進度條的改變方式
blood->setposition(blood->getpositionx(), blood->getpositiony()+50);
blood->setscale(0.5f);
addchildlocked(blood);
改變進度的方法:
1)直接改變
blood->setpercentage(60);
2)動畫漸變
blood->runaction(wyprogressby::make(2, 60)); //在2秒內,改變進度到60%
boss抖動**效果的實現。
抖動要用到wyshake實現的動畫,**就是使用幀動畫來實現,然後把兩個動畫序列化起來,成為乙個組合動畫,**如下:
void die()
void explode()
======
ok,把enemy.h完整的**貼上:
#ifndef enemy_h_
#define enemy_h_
class enemy: public wynode ;
public:
myscene* scene;
wyaction* actions[3];
wysprite* boss;
wyprogresstimer* blood;
const char* soundeffect;
float health;
public:
enemy(myscene* scene)
virtual ~enemy()
void renew()
void die()
void explode()
void shot() else
blood->setpercentage(health);
} void changeaction(enemyactionstag bat)
wyaction* makeaction(const char* an, wyzwoptexmanager* zm, int num)
wyrepeatforever* rp = wyrepeatforever::make(wyanimate::make(anim));
rp->retain();
return rp;
} void playeffect(enemyactionstag tag)
} void _playeffect(const char* preeffect, const char* cureffect, int type)
}};#endif /* enemy_h_ */
WiEngine遊戲引擎學習筆記(一)
1.menuitemlabel 可以算是wiengine封裝的使用起來比較簡單的menu元件。第一種,只需要給選單新增文字,就可以生成選單。start 是選單的文字,onstart 是選單的響應方法,menuitemlabel裡是用對映來響應的,按照例子,它會自動去尋找方法名是onstart的方法,...
遊戲引擎列表
物理engine 物理引擎國人作的 聲音openal 人工智慧 blender手冊 from wiki.blendercn.org blender中文版 yafray渲染器 blenderart雜誌 blander源 編譯環境 分布式渲染 場景編輯器,帶材質編輯器 中國人做的引擎.粘土 c 版的og...
遊戲引擎列表
遊戲引擎列表 物理engine 物理引擎國人作的 聲音openal 人工智慧 http www.blendercn.org download blendersc blander源 編譯環境 http code.google.com p wpyre 分布式渲染 http www.softlab.ece...