之前試用過網上的各種ARPG功能插件,感覺用起來不僅麻煩,還很容易出錯,
後來自己利用事件做瞭一個簡單的射擊戰鬥系統,
本文將分享我個人在不使用任何插件的情況下,用事件實現即時戰鬥(射擊)效果的方法。
視頻教程:RPGMakerMV教程|不靠插件,用事件制作一個ARPG戰鬥系統
ARPG(即時戰鬥)的原理很簡單,核心三要素:玩傢,敵人,武器,
將每一個要素以事件的形式放置於遊戲地圖中,各自會生成相應的坐標。
以射擊遊戲為例,我們需要讓子彈從玩傢所在的位置射出,移動到敵人的位置,
就得確保按下發射鍵時,子彈與玩傢和敵人的坐標分別重合,從而實現射擊效果,
遊戲程序的判定標準即為事件的坐標移動,因此我們需要用變量為每一個事件的坐標賦值。
1、以綠色slime為例,新建兩個事件,
分別命名為<子彈>、<綠slime>,加入相應的行走圖。
子彈(初始)b36b016ee1c68e65c4e9dc222c791b1b綠slime
2、新建變量,依次命名為:<玩傢X>、<玩傢Y>,<子彈X>、<子彈Y>,
<綠slimeX>、<綠slimeY>、<綠slime中彈數>。
3、新建事件,命名為<位置變量判定>,寫入執行內容:
操作變量:<玩傢X>=<玩傢的地圖X>,<玩傢Y>=<玩傢的地圖Y>
操作變量:<子彈X>=<子彈的地圖X>,<子彈Y>=<子彈的地圖Y>
操作變量:<綠slimeX>=<綠slime的地圖X>,<綠slimeY>=<綠slime的地圖Y>
e25d339b2b9cc0f1f22da4dbc7238cd9
以上操作的目的是將玩傢、子彈和敵人這3個事件在地圖中的坐標分別代入各自的變量值,
通過使各自的坐標值相等,實現按鍵後,子彈從玩傢位置發射,以及子彈射中敵人位置的效果。
4、打開<綠slime>事件頁,寫入執行內容:
玩傢顯示受傷動畫 → 更改玩傢圖像為「受傷」 → 更改玩傢圖像為「持槍」 →增減HP →(綠slime)後退兩步
當綠slime中彈數≥3時,綠slime停止移動→播放消失音效→逐步更改綠slime不透明度為0→暫時移除該事件
增減HP 的效果通過兩種方式來實現:
1、每1次觸碰減去玩傢的XX點HP值;
2、設置傷害的變量,通過累計變量來實現,例如敵人觸碰玩傢X次後遊戲結束。
5、打開<子彈>事件頁,寫入執行內容:
條件分歧:按鈕「上頁」被按下時(還可選擇確定鍵、取消鍵或方向鍵,
必然會導致與其他功能發生沖突,根據個人需求來調整),
更改玩傢圖像為「持槍」,將子彈的朝向與玩傢的朝向調整一致。
設置子彈的移動速度為4倍速,移動路線如下:
更改子彈不透明度為255 → 播放發射音效 → 向前移動7步 →更改子彈圖像為「擊中」→逐步更改子彈不透明度為0 → 更改子彈圖像為初始
9aecfd469e07ac305cb6dcd617f6e0d1
需要強調的是,如果你設置的子彈優先級與普通人物相同,則務必勾選「穿透」,否則子彈無法移動,反之則不必勾選。
如果想實現不同角色間切換不同子彈的效果,可通過分歧條件來實現,
比如當隊伍持有某種道具時,將子彈的圖像更改為其他,或直接切換到其他事件頁。
6、新建事件,命名為<敵人中彈>,寫入執行內容:
條件分歧:當<子彈X>=<綠slimeX>,<子彈Y>=<綠slimeY>,<綠slime中彈數><3,
綠slime顯示受傷動畫 → 更改敵人圖像為「中彈」→ 更改敵人圖像為初始 → 操作變量<綠slime中彈數>+1。
設置子彈的事件位置為(0,0),人物可移動范圍之外的任意位置皆可,
如果不做這一步,子彈射出後就會一直停留在原處,一旦與敵人的坐標重合,將會再次產生中彈的錯誤效果。
設置敵人中彈的原理與玩傢受傷的事件基本一致,
如果你不怕麻煩,想要更細致的效果,可分別制作敵人中彈、倒地時相應的行走圖,
設置移動路線在不同狀態下更改為相應的圖像即可。
其他敵人的事件也按照上述步驟設置,
若想重復刷怪,可在地圖的切換點設置所有敵人的中彈數變量歸0,從其他地圖切換回來後,敵人就會再次出現,
若想永久清除,可以設置相應的獨立開關。
總的來說,用事件來實現ARPG的原理並不難,隻是操作過程略為繁瑣,對每個敵人都務必仔細設置,
即使你不會代碼,隻要不怕枯燥麻煩,多弄幾下就能熟練上手,
畢竟,想偷懶肯定做不出討人喜歡的好遊戲。
祝各位都能做出滿意的作品來。
Polytec GmbH專業生產:光纖測試設備;機器視覺照明系統;X射線檢查設備;激光系統;運動測量激光系統;振動測量激光系統;頻...