游戲編程導(dǎo)論 Chapter-06_第1頁
游戲編程導(dǎo)論 Chapter-06_第2頁
游戲編程導(dǎo)論 Chapter-06_第3頁
游戲編程導(dǎo)論 Chapter-06_第4頁
游戲編程導(dǎo)論 Chapter-06_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第6章 理解動(dòng)畫與游戲角色 內(nèi)容提綱 6.1理解游戲動(dòng)畫6.1.1 幀動(dòng)畫與幀圖像6.1.2 幀序列6.1.3 游戲FPS的設(shè)定6.1.4 幀動(dòng)畫繪制實(shí)例6.1.5 文字動(dòng)畫繪制實(shí)例6.2游戲中的角色6.2.1 角色的含義6.2.2 游戲角色的共性6.2.3 角色信息的描述6.3多角色繪制與控制實(shí)例第6章 理解動(dòng)畫與游戲角色 動(dòng)畫制作的好壞直接影響到游戲角色的表現(xiàn),同時(shí)也會(huì)影響到游戲本身的可玩性和受歡迎程度。游戲動(dòng)畫與一般影視動(dòng)畫的區(qū)別:影視動(dòng)畫是線性動(dòng)畫,一旦制作完成,就只能按照合成后的順序進(jìn)行播放;游戲動(dòng)畫是交互的、非線性的,游戲玩家能夠控制游戲角色的行為。6.1 理解游戲動(dòng)畫動(dòng)畫產(chǎn)生的機(jī)

2、制人眼的“視覺暫留”效應(yīng),也稱視覺滯留現(xiàn)象(Visual Staying Phenomenon)。當(dāng)人眼看到的影像消失后,影像在人眼仍能繼續(xù)保留0.1-0.5秒左右;這種視覺暫留現(xiàn)象正是動(dòng)畫產(chǎn)生的基礎(chǔ);一般每秒10到12個(gè)靜態(tài)畫面的連續(xù)播放就足以產(chǎn)生視覺暫留;每秒可播放的靜態(tài)畫面數(shù)就是播放速度,以FPS(Frame Per Second,每秒幀數(shù))作為測(cè)量單位,即每秒鐘可以播放的幀(Frame)圖像數(shù)(一幀只包含一個(gè)靜態(tài)圖像);一般的電影是24FPS,電視是30FPS,而游戲動(dòng)畫的速度可能高于或低于這個(gè)速度。很多情況下,可能會(huì)低于電影、電視的播放速度。過高的FPS,將意味著更多系統(tǒng)資源的占用;

3、游戲設(shè)計(jì)要在畫面流暢度和系統(tǒng)資源占用率之間取得平衡。 6.1 理解游戲動(dòng)畫6.1.1 幀動(dòng)畫與幀圖像幀動(dòng)畫也稱為逐幀動(dòng)畫,它是基于連續(xù)靜態(tài)的幀圖像的動(dòng)畫,每幀圖像代表動(dòng)畫的一個(gè)瞬間動(dòng)作。影視動(dòng)畫屬于幀動(dòng)畫,而游戲設(shè)計(jì)中也常采用這種動(dòng)畫形式。幀圖像可以保存在每個(gè)單幀圖片中,但大多情況下是存儲(chǔ)在一個(gè)單獨(dú)的圖像文件中,繪制某幀圖像時(shí),需要從原圖中提取出對(duì)應(yīng)的幀圖像。幀圖像的排列是有順序的,這種根據(jù)動(dòng)作規(guī)律形成的有序幀圖像稱為幀序列。原圖中幀圖像的排列方式可以是單行、單列或多行多列方式其實(shí)這三種排列方式最終產(chǎn)生的動(dòng)畫效果是沒有任何區(qū)別的6.1 理解游戲動(dòng)畫6.1.2 幀序列將原圖中的幀序列重新組合后播

4、放,可以達(dá)到用少量素材產(chǎn)生更豐富效果的目的,這對(duì)于游戲設(shè)計(jì)特別重要。重新定義幀序列時(shí),幀可以重復(fù)、忽略,也可以使用相反的順序顯示等。原圖中的幀就如同拍攝電影的原始膠片,重新定義幀序列就相當(dāng)于對(duì)原始膠片進(jìn)行剪輯、編輯。幀序列號(hào)其實(shí)就是原圖中幀圖的順序號(hào),一般從0開始編號(hào);位圖操作類中的PaintFrame()函數(shù)專門處理幀動(dòng)畫繪制。6.1 理解游戲動(dòng)畫6.1.3 游戲FPS的設(shè)定游戲設(shè)計(jì)時(shí),設(shè)計(jì)人員往往要考慮動(dòng)畫播放速度與游戲畫面大小的關(guān)系;游戲設(shè)計(jì)中會(huì)在保證游戲流暢度的前提下選擇一種合適的畫面分辨率;編寫游戲代碼時(shí),需要合理地設(shè)定FPS,即要到達(dá)某一個(gè)FPS繪制一個(gè)靜態(tài)畫面(即每幀)所需要的具

5、體時(shí)間;衡量繪制每幀圖像所花費(fèi)的時(shí)間單位叫做SPF(Second Per Frame,每幀的秒數(shù));SPF與FPS之間是倒數(shù)關(guān)系,可以使用如下公式計(jì)算:SPF = 1000 / FPS(1000為毫秒數(shù))。T_Engine類中的SetFrame()函數(shù)會(huì)根據(jù)用戶傳入的參數(shù)計(jì)算出繪制每一幀所需的間隔時(shí)間。代碼如下:void SetFrame(int iTime) IntervalTime = 1000 / iTime; 6.1 理解游戲動(dòng)畫6.1.4 幀動(dòng)畫繪制實(shí)例幀圖像文件素材:騎馬飛奔的完整動(dòng)畫,該動(dòng)畫由保存在同一圖片文件中的6張尺寸完全相同的小幀圖組成?!纠?-1】利用PaintFrame

6、()函數(shù)實(shí)現(xiàn)動(dòng)畫繪制的實(shí)例。PaintFrame()函數(shù)原型定義:void PaintFrame(HBITMAP in_hbitmap, HDC destDC, int destX, int destY, int FrameCount, int RowFrames, int wFrame, int hFrame, float ratio=1, int rotType=0, BYTE alpha=255);6.1 理解游戲動(dòng)畫運(yùn)行結(jié)果:具體實(shí)現(xiàn)代碼請(qǐng)參見教程6.1 理解游戲動(dòng)畫6.1.5 文字動(dòng)畫繪制實(shí)例【例6-2】利用T_Graph類的PaintText()函數(shù)在動(dòng)畫上繪制有陰影的滾動(dòng)文字。這

7、個(gè)實(shí)例以例6-1為基礎(chǔ)實(shí)現(xiàn),也就是在播放例6-1的騎馬飛奔動(dòng)畫的同時(shí),在窗口自下向上顯示不斷滾動(dòng)文字,文字的前景色是白色,陰影色是黑色。具體實(shí)現(xiàn)代碼請(qǐng)參見教程最終的效果:6.2 游戲中的角色游戲中的角色,也稱游戲精靈(Sprite),是游戲中受玩家或計(jì)算機(jī)控制的活動(dòng)對(duì)象(也就是NPC)。6.2.1 角色的含義角色是指游戲中能夠與玩家或計(jì)算機(jī)進(jìn)行互動(dòng)的活動(dòng)對(duì)象。在二維游戲中,表現(xiàn)為使用圖形或圖像表現(xiàn)的各種受計(jì)算機(jī)或玩家控制的活動(dòng)對(duì)象。它有兩個(gè)主要含義:一個(gè)含義是角色本身是動(dòng)態(tài)表現(xiàn)的,也就是采用動(dòng)畫的方式表現(xiàn)的;另一個(gè)含義是角色在游戲過程中是動(dòng)態(tài)的,如位置、狀態(tài)、顏色等等。6.2 游戲中的角色在計(jì)

8、算機(jī)游戲中,任何能夠與計(jì)算機(jī)或玩家互動(dòng)的對(duì)象都可以稱之為游戲角色,或游戲精靈。例如游戲中的人物、子彈、武器、爆炸等。廣義地說,甚至游戲中的地圖、前景、背景、文字等,也可以稱為角色。按功能劃分,角色可以分為:玩家角色和非玩家角色,即NPC。嚴(yán)格地說,游戲中要參與玩家對(duì)抗的角色才稱為NPC。游戲中的角色大致分為四類:玩家角色、NPC、資源類角色以及描述裝飾性角色。6.2 游戲中的角色6.2.2 游戲角色的共性角色共性是抽象的,與具體游戲無關(guān),最主要的共性:坐標(biāo)位置方向活動(dòng)范圍移動(dòng)速度大多數(shù)游戲角色必須具備的共同屬性還包括:是否可見是否可活動(dòng)游戲等級(jí)游戲分值游戲角色圖像的加載、信息讀取是共同的操作6

9、.2 游戲中的角色6.2.3 角色信息的描述基本共性設(shè)定了游戲角色基本的關(guān)鍵信息。游戲中每一個(gè)游戲角色必須具備的關(guān)鍵信息,這些信息為游戲引擎中的各接口函數(shù),如圖形繪制、游戲邏輯處理等,提供關(guān)鍵的操作依據(jù)。T_Config.h文件中的SPRITEINFO的結(jié)構(gòu)體用來描述角色信息。利用這個(gè)結(jié)構(gòu)體類型,可以為每一個(gè)游戲角色定義統(tǒng)一的關(guān)鍵信息:6.2 游戲中的角色/ 游戲角色關(guān)鍵信息(每個(gè)新增角色必須設(shè)置全部值)typedef structintX;/ 精靈初始X坐標(biāo)intY;/ 精靈初始Y坐標(biāo)intDir;/ 精靈初始方向(取值為GAME_DIR常量)intSpeed;/ 角色初始的移動(dòng)速度intL

10、evel;/ 精靈初始的等級(jí)intScore;/ 精靈角色分值 boolVisible;/ 精靈在屏幕上是否可見boolActive;/ 精靈的狀態(tài)(是否移動(dòng))boolDead;/ 精靈是否是死亡狀態(tài)BYTEAlpha;/ 精靈透明度floatRatio;/ 動(dòng)畫幀圖片放大或縮小比/ 等于1原始尺寸,大于1放大,小于1縮小intRotation;/ 幀圖片是否鏡像變換(取值為TRANSFER常量)SPRITEINFO;6.2 游戲中的角色T_Config.h頭文件中定義了表示方向的枚舉類型GAME_DIR,該類型中定義了8個(gè)常用方向常量值:/ 游戲方向常量,其值為方向鍵對(duì)應(yīng)的鍵值enum GA

11、ME_DIRDIR_LEFT,/ 左DIR_RIGHT,/ 右DIR_UP,/ 上DIR_DOWN,/ 下DIR_LEFT_UP,/ 左上DIR_LEFT_DOWN,/ 左下DIR_RIGHT_UP,/ 右上DIR_RIGHT_DOWN/ 右下;6.2 游戲中的角色T_Config.h頭文件中定義了類型,其中定義了12個(gè)與圖像旋轉(zhuǎn)或翻轉(zhuǎn)相關(guān)的常量值: / 圖像繪制處理常量enum TRANSFERTRANS_NONE,/ 原始圖像TRANS_NOFLIP_ROT90,/ 原始圖像順時(shí)針旋轉(zhuǎn)90度TRANS_NOFLIP_ROT180,/ 原始圖像順時(shí)針旋轉(zhuǎn)180度TRANS_NOFLIP_RO

12、T270,/ 原始圖像順時(shí)針旋轉(zhuǎn)270度TRANS_VFLIP_NOROT,/ 原始圖像垂直翻轉(zhuǎn)TRANS_VFLIP_ROT90,/ 原始圖像垂直翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)90度TRANS_VFLIP_ROT180,/ 原始圖像垂直翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)180度TRANS_VFLIP_ROT270,/ 原始圖像垂直翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)27度TRANS_HFLIP_NOROT,/ 原始圖像水平翻轉(zhuǎn)TRANS_HFLIP_ROT90,/ 原始圖像水平翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)90度TRANS_HFLIP_ROT180,/ 原始圖像水平翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)180度TRANS_HFLIP_ROT270/ 原始圖像水平翻轉(zhuǎn)并順時(shí)針旋轉(zhuǎn)270度;SPRITEINFO的結(jié)構(gòu)體中的Rotation元素的取值就是TRANSFER類型的常量值。6.3 多角色繪制與控制實(shí)例【例6-3】多游戲角色動(dòng)畫繪制、行為控制及玩家角色的交互控制。動(dòng)畫素材:簡(jiǎn)單4個(gè)方向移動(dòng)的方塊動(dòng)畫6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論