作者chrisjeremy (Yomi)
看板GameDesign
標題Re: [請益] 關於人物移動的狀態機
時間Sat Jun 9 01:49:25 2012
※ 引述《yoll522 (yolling)》之銘言:
: 前一陣子在這裡詢問各位高手人物移動該怎麼寫比較好
: 得到了Chenglap大的答案,是用狀態機的方式寫
: 目前我們一個角色有四個方向,每個方向有3張,總共12張圖片
: 所以我想到的方法是先創一個12個大小的陣列,
: 接著把那張角色圖的每個位置擷取下來,放進該陣列的位置
: 大概如下
: Image *temp = new Image(L"路徑"); //讀取整張角色圖,放進temp
: Image *Role = new Image[12]; //創一個Role的陣列,打算將角色圖的每個位置存入
: Role[0] = xxxxxxxx //取出方向為上的第一張圖
: Role[1] = xxxxxxxx //取出方向為上的第二張圖
: Role[2] = xxxxxxxx //取出方向為上的第三張圖
: 這樣當我按下方向鍵上的時候,程式就會去執行Role[0]到Role[2]的圖片
: 可是我查了很久的GOOGLE,並沒有查到可以擷取圖片的部分位置,然後存入陣列的
: 想請問各位高手,我的方法正確嗎?或者是有什麼方法可以讓我把角色存入陣列的?
: 謝謝
: 我本來有查到SetClip,但這似乎只能擷取圖片的位置後,就直接畫出去了
: 好像不能夠存到陣列裡@@
其實不需要把圖片再從畫面上擷取下來,這麼做效能會很差
繼續使用原本的12張圖就可以了
你第一步的構想是對的,先把12張圖從檔案中讀取出來,放進你的Role[]裡面
第二步,當你按上時就畫Role[]的012張圖
然後在畫的時後,把座標往上移就可以了,這樣子人物看起來就像是往上走了~
程式碼看起來就會像這樣
Image *Role = new Image[12];
Role[0] = new Image(L"路徑1");
Role[1] = new Image(L"路徑2");
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.225.76
推 Hevak:這樣的話用setclip不是比較好? 06/09 07:11
→ chrisjeremy:剛剛回去找原文才發現,我一整個會錯意(爆) 06/09 08:38
→ chrisjeremy:如果把角色動作的圖全部放在一張圖裡的話 06/09 08:39
→ chrisjeremy:用setClip就夠了,也不需要開Role[]了 06/09 08:42
推 yoll522:謝謝,不好意思,我文章沒有表達清楚是12張圖在一個圖檔 06/10 18:36
→ yoll522:裡面,我等等去查查看setClip的用法,謝謝 06/10 18:36