創作內容

0 GP

9/13,續昨天,地圖行走時切換角色程式碼說明

作者:李兒諳│2015-09-13 21:37:44│巴幣:0│人氣:514
忘記今天是星期天了,原則上星期天發文勢必得縮減電玩時間
雖然說研究網頁遊戲程式(也可說巴哈發文)多少會影響到電動時間與遊玩心境
之前在研究Unity移植文字型冒險遊戲時幾乎快停玩一星期
是否值得我也不太清楚
網路遊戲大多蠻重視累積的,因此事後來看會覺得虧大了
但自己某時刻的心情是不好掌握的
所以是有些不好論斷的
(有些類似少壯不努力,老大徒傷悲那樣
雖然努力的方向是遊戲,會給人比較...的感覺)

嗯...好像自然而然的把氣氛帶往感傷的方向
不過老實說能有些小成果與作品本質上還是很振奮的事情啦!!
若不看尚未解決的問題的話
回正題,雖然上篇有提過,不過還是再提一下
作品是http://1drv.ms/1EX2Ux0

因為安全性問題
OneDrive已經停止短網址功能
所以之前短網址連結一律修正為
https://onedrive.live.com/redir?resid=B90617D056EA2F32!124&authkey=!AKj_OaqXtM7Rjc8&ithint=folder%2cpng

的change_role.html
有用到新圖檔king_cobra2.png

主要是仿仙劍奇俠傳三代以後的迷宮地圖中tab鍵主角切換
雖然仙劍奇俠傳三代以後的主角切換並不單純只是圖檔變化
有像是在迷宮中的特技,跟道具採集,屬性寶箱開啟等
這做法應該是可以跟早期RPG配角跟隨主角(像軒轅劍貳)一起
不過單獨使用感覺也不錯
當然我沒有一起使用的主因是,我還做不出跟隨的效果

這次程式本質上還算蠻好想的
按鍵切換人物
程式要更動的地方就是按鍵跟貼圖的程式碼

我keydown事件是寫在function move_in_maze裡(迷宮走行走)
可直接ctrl-f打keydown找

至於html5用canvas的貼圖,基本上都是用drawImage來處理
不過drawImage使用太廣泛了,幫助不大(雖然要改主角圖片是用那函式改沒錯)
跟主角貼圖有關,所以可以直接打主角圖檔名稱king_cobra來搜尋
再用找到的Picture物件名cobra_image(9/14 09:51更正)去搜尋

大致上就能找到這次更改的程式碼

drawImage格式大概如下(雖然多型有非9參數的,不過9參數較泛用就用它了)
ctx.drawImage(cobra_image.image,96*step,96*direction,96,96,hx,hy,96,96);
大致上可以猜出改圖檔靠第一個參數,可自行更改測試下
(但若圖檔跟原先的格式不同,出來結果會怪怪的,會被切割成96*96顯示)

確定更改圖檔沒問題後
就只要構思什麼時候切換圖片即可
也就是要新增至少一個變數來控制切換時機
我這邊是用move_character的值來判斷

由於目前只有兩個角色,因此
if(move_character == 0)
{
ctx.drawImage(cobra_image.image,96*step,96*direction,96,96,hx,hy,96,96);
}
else if(move_character == 1)
{
ctx.drawImage(cobra2_image.image,96*step,96*direction,96,96,hx,hy,96,96);
}
角色多時建議換成switch case寫法

那接著只要在按鍵時更動move_character值就可以達成地圖行走角色切換的效果
由於只有兩個角色,寫法可以直覺的寫成
if(e.keyCode==65)
{
    if(move_character==0)
      move_character=1;
   else
      move_character=0;
}
e.keyCode==65代表A鍵被按下
然後全域變數(在function外宣告)var move_character=0;就行了

不過那寫法若換成三個角色就會略有麻煩,若結構不變的話要多加else if
而且那還是三個角色同時在隊伍的情況下才能那麼寫

因此我的寫法是,再建立一個陣列
(javascript的陣列較怪,不然長度不固定的不太用陣列存,雖然陣列不會太大的話還是可以啦)
存目前的隊伍角色成員
從最後的程式碼↓
if(e.keyCode==65)
{
    i++;
    if(i<now_character.length)
       move_character=now_character[i];
    else
       move_character = now_character[0]; i=0;
}
可看出陣列名稱是叫now_character
再ctrl-f搜尋now_character
可以找到存目前隊員的經過
var now_character=[];
now_character.push(0);
now_character.push(1);
也可以寫成傳統較常見的陣列寫法
now_character[0]=0;
now_character[1]=1;
但不太建議,因為透過push,pop才較好更動陣列長度(length,也可以想成個數)
經過這樣的改動就可以處理多角色了
這麼說有些欠缺說服力
雖然目前僅有兩個角色,但也可以模擬下四個角色
只要改成
now_character.push(0);
now_character.push(1);
now_character.push(1);
now_character.push(0);
兩個角色時(藍橘)每按一次鍵時就切換
這樣改的話隊伍成員是藍,橘,橘,藍的話
那除了第一次外,每次要換角兩次(按鍵兩次)才會變色

嗯,程式碼解說大概就這樣!!
(囧,還是打了約二小時)
明天不一定會更新
但若更新的話很大的機率是在閒聊吧
(也可能會實作單障礙物,但除非實作的很順利,不然應該是沒時間發文)
覺得最近的新聞還蠻有意思的
像是新加坡大選,歐盟與敘利亞難民
但話說回來個人的見識新聞大概也是沒什麼好聊(篇幅會很短吧)
不過日子感覺是變得較平常有意思些(能轉移些注意力跟思考)
總之看情況吧!!
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2961262
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:RPG網頁設計

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:9/12,先放作品,明天... 後一篇:9/18,電動(幽界之門...

追蹤私訊切換新版閱覽

作品資料夾

ac102663081all
繪圖更新,自看看更多我要大聲說昨天02:24


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】