日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

世嘉MD游戏开发【九】:Sprite精灵

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 世嘉MD游戏开发【九】:Sprite精灵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

終于講到Sprite精靈了,我自己也很希望快點講精靈,但是欲速則不達,自己要是還沒研究透徹這個知識點就去講下一個,感覺文章肯定是寫不好的。

我用下圖來做演示,SFC幽游白書-魔界最強列傳里的雷禪:

怎么處理圖片已經演示的很清楚了,前面也有講過,不明白的可以到SGDK/bin里查看rescomp.txt這個文檔。

怎么把圖片設置成精靈呢,先把需要的精靈放到工程根目錄下的res文件夾里,然后在res文件夾里新建一個resources.res文件,用記事本打開,在里面寫上:

SPRITE hq "hq.png" 8 8 0

SPRITE是代表這個資源的類型,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精灵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。