基於WiEngine遊戲引擎 戰鬥場景之boss

2021-06-12 17:53:13 字數 2907 閱讀 3406

動作類遊戲,戰鬥類場景很常見,接下來幾篇文章,我將記錄用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...