Re: [請益] 關於人物移動的狀態機

看板GameDesign作者 (Yomi)時間12年前 (2012/06/09 01:49), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《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

06/09 07:11, , 1F
這樣的話用setclip不是比較好?
06/09 07:11, 1F

06/09 08:38, , 2F
剛剛回去找原文才發現,我一整個會錯意(爆)
06/09 08:38, 2F

06/09 08:39, , 3F
如果把角色動作的圖全部放在一張圖裡的話
06/09 08:39, 3F

06/09 08:42, , 4F
用setClip就夠了,也不需要開Role[]了
06/09 08:42, 4F

06/10 18:36, , 5F
謝謝,不好意思,我文章沒有表達清楚是12張圖在一個圖檔
06/10 18:36, 5F

06/10 18:36, , 6F
裡面,我等等去查查看setClip的用法,謝謝
06/10 18:36, 6F
文章代碼(AID): #1FqZie3P (GameDesign)
文章代碼(AID): #1FqZie3P (GameDesign)