世嘉MD游戏开发【九】:Sprite精灵
生活随笔
收集整理的這篇文章主要介紹了
世嘉MD游戏开发【九】:Sprite精灵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
終于講到Sprite精靈了,我自己也很希望快點講精靈,但是欲速則不達,自己要是還沒研究透徹這個知識點就去講下一個,感覺文章肯定是寫不好的。
我用下圖來做演示,SFC幽游白書-魔界最強列傳里的雷禪:
怎么處理圖片已經演示的很清楚了,前面也有講過,不明白的可以到SGDK/bin里查看rescomp.txt這個文檔。
怎么把圖片設置成精靈呢,先把需要的精靈放到工程根目錄下的res文件夾里,然后在res文件夾里新建一個resources.res文件,用記事本打開,在里面寫上:
SPRITE hq "hq.png" 8 8 0SPRITE是代表這個資源的類型,hq是這個資源的名字(寫成黃泉的縮寫了,應該叫lc.png,不要在意這些細節),在代碼里用到的話就寫hq,雙引號內的是文件路徑,8 8是這個圖片橫著數有幾個tile,豎著數有幾個tile,這個雷禪分辨率是64x64,除以8,所以就是8 8了,最后的0代表壓縮級別,0是不壓縮,也是質量最好的。
接著在工程根目錄下的src文件夾里新建main.c,開始擼代碼:
#include <genesis.h> #include <vdp.h> #include <sprite_eng.h> #include "resources.h" //resources.res文件自動生成的頭文件//聲明一個精靈變量 Sprite *sprite_hq = NULL;//位置 s16 px = 0; s16 py = 0;//輸入管理 void HandleInput();//打印位置信息 void PrintMessage();int main() {//初始化sprite,默認VRAM內有512個tile緩存區,內存中有320個tile緩存區,//要是需要自己設置tile緩存區可以用void SPR_initEx(u16 vramSize, u16 unpackBufferSize);//注:這一句初始化一定要寫,不然顯示會亂碼SPR_init();//設置PAL1調色板為hq.palette->data,hq是SpriteDefinition類型的結構體:詳情可定位到頭文件查閱// typedef struct// {// Palette* palette;// u16 numAnimation;// Animation** animations;// u16 maxNumTile;// u16 maxNumSprite;// } SpriteDefinition;VDP_setPalette(PAL1, hq.palette->data);//背景太黑了,改成灰色VDP_setBackgroundColor(3);//給精靈變量賦值,后面這幾個參數不再詳細贅述,前面講繪制圖片時有講到過類似的sprite_hq = SPR_addSprite(&hq, px, py, TILE_ATTR(PAL1, 0, FALSE, FALSE));while (1){//輸入管理HandleInput();//更新精靈,一定要寫這一句,不要忘記,否則對精靈的操作都是無效的,并且也不會顯示精靈SPR_update();//在屏幕打印出精靈的坐標信息PrintMessage();VDP_waitVSync();}return 0; }//前面有講過input,很簡單,大家看看就行 void HandleInput() {u16 input = JOY_readJoypad(JOY_1);if (input & BUTTON_UP){py--;}if (input & BUTTON_DOWN){py++;}if (input & BUTTON_LEFT){px--;}if (input & BUTTON_RIGHT){px++;}//void SPR_setPosition(Sprite* sprite, s16 x, s16 y);//s16是shortSPR_setPosition(sprite_hq, px, py); }//打印位置信息 void PrintMessage() {//存儲x坐標char msg_x[25];//存儲y坐標char msg_y[25];//把坐標格式化成字符串分別存到倆msg數組中,這里只寫%hd不行,必須在%后面加上一個數字//否則得到的坐標會變得很詭異,可以自行試一下sprintf(msg_x, "sprite pos x : %6hd", px);sprintf(msg_y, "sprite pos y : %6hd", py);//略過VDP_drawText(msg_x, 1, 22);VDP_drawText(msg_y, 1, 23); }注:精靈的默認頂點是圖片左上角。
編譯,得到rom.bin,用模擬器打開,就可以用方向鍵控制精靈移動了^_^
未完待續。。。
復古游戲開發群:879063892
總結
以上是生活随笔為你收集整理的世嘉MD游戏开发【九】:Sprite精灵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 10 系统设置系统环境变
- 下一篇: 英文双引号