創作內容

4 GP

RPG Maker MV- 事件跟隨範例:武器、拖車、帆船

作者:Daniel│RPG 製作大師 MV│2020-10-09 23:29:19│巴幣:8│人氣:1141
前言
由於不熟JS,笨笨如我只能用軟體內建系統與簡單的語法處理,
因此若是有高手指點更聰明的方式,敬請不吝於協助與賜教:)

當初會想這樣測試,是希望在RMMV裡表現"可以自訂義角色外觀"這個想法,
將頭盔、鎧甲、武器分開來,"裝備"在身上的效果。

( 圖源: https://www.toy-people.com/?p=37925 )

算是想做出魔界村的雅各,那種可以在地圖上變換武器、裝備的系統。
每裝備一個護甲會增加一格血量,裝備多寡會影響移動速度這樣。
這些物件會被敵我破壞、搶奪或是效果增益Buff。

假設,人物可以選男女,裝備有頭、身體、武器3種,每一種又有3款,
就有54種排列組合,若是全部弄成人物圖,檔案會很繁雜...
所以才嘗試藉由事件跟隨表現的方式,讓運作上更靈活。
(若是用事件控制角色外觀,就會有三個事件一直跟隨主角的位置)

一開始,只是想讓主角們在行走時呈現裝備的武器或是資訊介面。
後來開始想表現運輸兵這個角色,所以想讓角色後面拉著(跟隨)貨車,
再後來想嘗試:讓角色乘船的樣子。

(沒發生戰鬥的選單介面)

(進入戰鬥時的輔助介面)

但老實說,只要主角的外型都固定同一個外型,
藉由將物件和角色影像合成在一起,文章標題的目標大致都能解決。
總之,就來記錄一下這些想法測試,開始上班後,很多想試的東西都無心想弄了...
------------------------------------------------------------------------------------------------------------
內容項目
首先,來定義跟隨的物件要怎麼呈現:
情況一:運用"隊友跟隨"系統來表現
情況二:讓事件接近主角
情況三:讓事件走到指定座標( 例如: 事件走到主角座標x減1的位置 )


(三種可運用的方式來表現跟隨)

應用範例:
A. 武器跟隨 (情況二)
B. 拖車跟隨 (情況一、三)
C. 帆船跟隨 (情況三)
----------------------------
前置規畫
另外有一些經過測試後碰到的狀況,製作前需要注意的事情:
1. 跟隨事件的圖片中心點位置,是否在畫面中間底部?
2. 角色與事件的優先順序。
3. 分擔跟隨事件的運算工作。
4. 降低需要另外運算的情況。
5. 要注意主角與事件之間的堆疊問題。
希望這些敘述,可以讓閱讀者對於後面的範例說明有個概念。

1. 跟隨事件的圖片中心點位置,是否在畫面中間底部?


( 以重機騎士為例:由於理想的中心點 [籃框] 與系統預設的中心點 [紅框] 之落差,
必須讓圖案下移一格,維持在主角座標y+1的位置,來符合設計時想要的樣子。 )

如果符合,就可以輕鬆的用情況一、二處理。
但是如果是比較龐大的跟隨物如交通工具、輔助介面,那只好用情況三了。

2. 角色與事件的優先順序

(事件的圖層順序選項)

以武器跟隨為例,因為人物的四個方向,武器事件順序不一定都在角色之上,
因此,目前我以事件裡面的選項與開關,搭配回報事件來運作這方面的呈現。

3. 分擔跟隨事件的運算工作

黑框-回報事件:偵測主角的各種資訊,例如座標、方向、按鍵按下,然後控制開關、變數去影響跟隨事件。紅框-跟隨事件:主要任務是移動到指定位置,然後藉由開關變數去切換不同的劇情頁面。藍框-玩家:視情況會隱藏角色圖片,主要用來讓系統取得玩家的操控行為。)

跟隨,是讓事件用和主角一樣的移動速度移動到指定位置。
因此,要降低會影響事件移動速度的判斷內容,
需要另外設置一個"自動控制判斷"的事件,來影響跟隨事件
(例如方向、位置定位...許多參數與開關的回報與運作),
這部分需要事先把運作流程設計好,不然會花很多時間尋找、調整Bug。

4. 降低需要另外運算的情況

(由於速度差距而跟不上主角的跟隨事件。需增加按Shift的判定,用劇情頁面換跟隨速度。)

遊戲有許多移動表現,除了上下左右鍵能操控移動,還有點擊畫面使角色前往,
以及按住shift改變奔跑/走路速度、跳躍...等改變速度、位置或移動方式的因素。
這些系統的運作,都有可能讓控制跟隨事件變得非常複雜。
因此,要預先設計限制玩家能移動的方式,例如在地圖的選單裡勾選禁用衝刺。
至於點擊畫面的移動,目前我還沒有找到語法來判定... (暫時用禁用衝刺來限制)
(20201205更新)
目前已發現可以使用免費plugin - TDDP_ManageDashing 控制滑鼠點擊移動,讓人物不會爆衝,這樣事件的跟隨就單純多了:只需要注意鍵盤的操控因素。

5. 要注意主角與事件之間的堆疊問題


(若是用面積較大的圖案作為跟隨事件,可能會碰到很多層次順序上的問題。視情況,盡量避免不必要的事件,讓跟隨的運作單純化。)

之前有測試在主角周圍顯示輔助介面的跟隨事件(例如血量、技能消耗數),
但由於同時有很多要控制的介面事件會在同一格,因此會有層次堆疊的順序問題。
所以要避免同時有太多跟隨事件運作的情況,要不然就是設定不同情境,來減少判定。
-----------------------------------------------------------------------------------------------------------------
A. 武器跟隨

(武器的圖層順序會依方向不同而改變)

A-1:繪製武器的"走路"圖檔
基本上,我都是拿戰鬥時的武器圖片(img>system>Weapons)來修改,
由於這些武器的比例都稍微比人物大,所以在PhotoShop編輯時都要先縮小+銳利化邊緣。
為了讓武器配合人物的擺動,會再根據手、身體的位置改變武器角度,例如長槍、火銃。

另外,需要紀錄武器在人物不同方向的排序(低於/高於),以便後續在事件中調整(優先順序)。
基本上武器的中心點都與人物一致,所以在事件的跟隨上會比較好處理,
當然的,若是要讓武器跟隨npc就另當別論了,為降低運算複雜度與避免過多事件,
npc手持武器的樣子,直接弄成同一個圖片會比較方便。

20201205內容調整:
在排列順序上,有些情況可以適度地把 "低於/高於" 調整為 "與人物相同",來降低與其他事件重疊時的突兀感,"與人物相同" 會因為事件重疊時,先來後到的順序而時高時低,表現上會比強硬的 "低於/高於" 自然許多。

A-2:情況二_讓事件接近主角

(不要選自動運行,不然遊戲會因為一直在執行這個事件而卡住。)

誠如前置規畫提到的,除了武器的事件,還會另外設置一個"並行"觸發的事件,
來分擔執行武器的"方向、出現位置"的工作,讓武器專門執行"向玩家移動"的指令,
由於這個事件是用來回報其他狀況來讓武器變化,所以後面我都稱為回報事件。
接下來會分別介紹 武器與回報事件 兩個部分。

回報事件:偵測鍵盤或角色的方向來變化開關,讓武器自己根據開關,變化劇情頁面

(運作範例,視情況增加其他判定,讓跟隨事件的表現更順暢。)

藉由"條件分支" (if, else if) 裡面的的分頁3、4功能,就可以輕鬆的判斷角色方向,
或是常用的按鍵有沒有按,來控制我們設定的方向開關,例如:
若:"左鍵"被按 >>> "上/下/左/右" 開關Off,"左" 開關On。
其他"右鍵"被按 >>> "上/下/左/右" 開關Off,"右" 開關On。
  其他(剩餘按鍵以此類推...)
觸媒器設定為:並行,讓事件不斷地執行判斷,
然後武器事件就會根據開關,來切換不同方向的劇情頁面

武器事件:藉由開關來切換不同的劇情頁面,達到迅速改變武器的狀態

會注意到這個方式,是因為看到 "快速劇情創建" 中的寶箱功能,
裡面藉由開關來改變事件狀態的方式。
經過嘗試後,就透過這種切換開關與劇情頁面的方式,來轉換事件的不同狀況。


(不要用自主移動>類型>接近,事件會一直亂走,用自訂義的指令才會固定在主角的位置。)

以開關:右 On 為例子
(當右按鍵按下或主角面向右,名稱為"右"的開關為開起狀態)

該劇情頁面圖像,設定為向右方,
自主移動設定:自訂義-
向玩家移動,
速度4-標準、頻率5-最高 (這是主角預設的走路速度),
選項勾選:行走、穿過 (讓"武器"可以站在主角的位置)
優先順序設定不同的順序 (以拿劍為例,會設定為"高於人物"來表現右手持劍)。

行走、踏步、方向固定,這部分還有小瑕疵我沒試完,
原因是武器移動畢竟還是會延遲一點點,踏步沒辦法很完美的與人物完美對準,
因此我在考慮是否主角與武器的行走動畫關掉,讓回報事件根據按鍵,開關踏步動畫,
這樣兩者的走路動畫、方向就會一致~ 但若不介意這個芝麻小事,勾"行走"就好了~~

(控制事件根據不同情況切換頁面,執行不同內容)

因為事件系統的劇情頁面,預設可以判斷兩個開關,
所以我試過同時判定Shift (衝刺)與主角方向的狀態,來表現跑步中武器跟隨的狀況。
也試過可以切換很多種武器的狀況,因此才得知劇情頁面最多只能設定20個,
想要做轉換武器的系統,看來還是有數量的限制。(或是設定很多個武器跟隨來判定開關~)

但是目前有碰到按鍵狀況無法解決的狀況:滑鼠點擊畫面的移動,
我想,若是有判斷"是否為點擊移動"狀態的語法就好解決了。
我有嘗試過:運算主角與劇情的距離當成變數,來瞬移武器事件...
不過會用到絕對值得語法與變數定義與運算,蠻麻煩的就不贅述了。
暫時,就先以限定主角的速度為解決手段吧。
(20201205更新)
目前已發現可以使用免費plugin - TDDP_ManageDashing 控制滑鼠點擊移動,讓人物不會爆衝,這樣事件的跟隨就單純多了:只需要注意鍵盤的操控因素。
---------------------------------------------------------------------------------
B. 拖車跟隨

(若是拉拖車的角色固定,合成一張圖還比較好)

B-1:繪製拖車的"走路"圖檔


(DLC tile:Call of Darkness Japanese Resource Pack

這個素材是用官方的日式DLC tilesets內容來改的,
由於這個拖車的寬度是兩格人物,所以會碰到中心點不在中間底部的情況,
但後來經由與他人討論後,有藉由改變圖片的方式解決,
可是也有找到藉由語法達成效果的狀況,
而且這兩種方式的中心點也不同,
所以我還是把兩種狀況記錄下來。

B-2:情況一_運用"隊友跟隨"系統來表現


由於只是換隊友圖案,所以圖片中心點就必須符合中間底部,
因此拖車在朝下的部分就將把手刪去,一方面符合規則,
另方面,經過測試後覺得拖車在人物後方,會因為角色遮看不太清楚拖車的把手細節,
所以就這樣以圖片處理解決了跟隨表現。

這麼做好處蠻多的:
- 不用設置回報事件,只要處理換隊友圖片的事件即可
- 在圖層順序上很自然,不用在意與其他事件的高低順序
- 不用在意速度、移動變化對拖車的影響
因此拖車跟隨,目前我用這個方案表現。

B-3:情況三_讓事件走到指定座標
為了保持拖車的完整,而把中心點往上提高一個人物的高度,
要讓拖車事件的中心點定位在角色後方,就必須藉由語法:
自主移動>自訂義>腳本:
this.moveTowardCharacter({x:$gamePlayer.x , y:$gamePlayer.y}),勾上選項:重複移動。
讓事件移動到主角($gamePlayer)的XY座標,不過根據不同方向的劇情頁面,
XY數值改成x+/-1y+/-1來調整事件中心點的位置。


若是想把跟隨的對象,改成隊伍的人 (例如第三個人),語法是:
this.moveTowardCharacter({x:$gamePlayer.followers().follower(2).x , y:$gamePlayer.followers().follower(2).y});
第一個跟隨隊友是follower(0);第二個是follower(1),以此類推。
目前,我把它用來讓隊友也顯示拿武器的樣子。

其他部分就與武器跟隨一樣,要設置跟隨、回報事件。
不過相比B-2隊友跟隨,就會讓事件的設置複雜許多,尤其是當拖車與其他事件重疊時。
所以在移動變化與事件數量上,要限制許多變化,來避免效果呈現上的破綻。
-----------------------------------------------------------------------------------------------------
C. 帆船跟隨

(目前沒有製作水面倒影的內容,但為了美術可以考慮製作~)

C-1:繪製帆船的"走路"圖檔
由於之前有製作帆船的專案,所以將部分物件拿來與網路上找到的小船素材合成。
帆船的中心點,目前是設定在主角站的位置,讓中心點跟隨主角位置。

不過,在打文章的時候回過頭測試,會覺得...
或許可以調整成中心點以船的中心而非人物,
然後,用事件調整成主角尾隨在船後的模樣。
(主角隱形、船中心點定位主角位置、隊友改成主角模樣)

以 人 為中心點的帆船配置:

(預設人物站的位置)

船在原地轉方向的感覺會不自然,但是移動中的表現是順暢的。
缺點是圖案大,圖層高低變化對周遭的影響會更明顯,
也許改成船帆、人物、船體三個物件,各自在同一個圖層會比較安定。

以 船 為中心點的帆船配置:



船本身的旋轉是合理的,但是人物的跟隨表現會不自然,
人物在水面走路蠻奇怪的,所以較適合把人物與船直接合在一起,
直接合成人、船,或許是一勞永逸的做法。

另外,我有想過是否要設定讓船揚帆時,一直移動的系統;
收帆時,改成主角划槳移動,這樣的駕船移動情境,不過目前還未測試。
可能需要另外設定"風速、船速"的變數來回報,影響航行的效果...

C-2:情況三_讓事件走到指定座標
由於帆船上有站在船尾的乘船角色,
感覺...已經不是帆船跟隨了,是主角跟著船的狀況了
所以後來我才又試一次為中心點的帆船配置(用隊友跟隨系統),
不過~ 在轉彎的時候,跟隨的角色會走出船外這點...蠻出戲的,
所以才會有上文提到:把人物直接弄在一起,這個結論。
不管如何,可以確定的是還需要調整,才能更適當的表現"駕船"的感覺。

但是目前為中心點的帆船配置
只要照著B-3(
讓事件走到指定座標)的方式處理,即可符合"帆船跟隨"主角的運作方式,
剩下的就是苦惱如何表現的自然、搭船、開船的模式了。
--------------------------------------------------------------------------
補充
20201025犯蠢記錄:
前陣子想嘗試用腳本,針對事件進行指令 $gameMap.event(eventID).setPosition(x,y)
但是我一直不知道去哪邊看事件的ID,之前以為eventID是自己打的名稱,
(仔細想想不合理,因為進行複製的事件名稱會一樣)
後來才發現...整個劇情編輯器的介面左上角,就有顯示ID編號。


總之,這樣就可以讓回報事件更精準的運作事件了:
this.moveTowardCharacter({x:$gamePlayer.x , y:$gamePlayer.y})
this$gamePlayer$gamePlayer.followers().follower(順序)
換成$gameMap.event(事件ID),就可以弄出蠻多變化的。

20201205內容更新:
- 目前已發現可以使用免費plugin - TDDP_ManageDashing 控制滑鼠點擊移動,讓人物不會爆衝,這樣事件的跟隨就單純多了:只需要注意鍵盤的操控因素。

- 在排列順序上,有些情況可以適度地把 "低於/高於" 調整為 "與人物相同",來降低與其他事件重疊時的突兀感,"與人物相同" 會因為事件重疊時,先來後到的順序而時高時低,表現上會比強硬的 "低於/高於" 自然許多。
---------------------------------------------------------------------------------
終於整理完了...
不過,這樣整理下來感覺真是破綻百出、自找麻煩的範例啊!
老實說畫走路也是蠻花時間的,但~就是慢工出細活,不用想太多邏輯的部分~
希望這樣的紀錄可以提供不會JS的人試試,用"事件跟隨"來增加角色扮演的樂趣。

之後再找時間紀錄"距離計算"的功能好了,跟文章裡提到的"絕對值"語法有關,
這部分我有嘗試弄成戰鬥攻防、敵人行為、射擊子彈的表現,
不過事件就會變得很複雜,花太多時間在尋找錯誤...
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4943386
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:RPG 製作大師 MV

留言共 0 篇留言

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

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

前一篇:旅行青蛙- 田雞殿下,我... 後一篇:RPG Maker MV...

追蹤私訊切換新版閱覽

作品資料夾

san0196
《我是靈異人》最新一話更新囉!歡迎來我的小屋看看喔!看更多我要大聲說昨天13:55


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

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