Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /opt/bitnami/wordpress/wp-includes/functions.php on line 6114
MC 煉金工藝 – 粒子效果與旋轉法陣 - 八寶周的研究小屋

MC 煉金工藝 – 粒子效果與旋轉法陣

透過粒子效果可以大大提升遊戲的沉浸感,使玩家的創意在遊戲中得以充分展現。

0. 前言


無論是在冒險地圖中製作生動的場景,或是為技能設計絢麗的動畫,/particle 指令都能派上用場。透過粒子效果可以大大提升遊戲的沉浸感,讓你的創意在遊戲中得以充分展現。

那我們這篇我們會進行 particle 的基礎知識到進階設定,順帶簡單實作,馬上就來看看吧!

1. 重點


delta 用於指定粒子效果的範圍,並受 count 影響進行排列
delta 在 count = 0 時通常用來指定 Motion
force 不僅是增加視野距離,還可強迫在 Minimal 設定之下顯現粒子

2. 內容


2.1. 完整解析

2.1.1. 粒子效果的特性

在遊戲中粒子效果是以 2D Sprites 形式呈現,因此無論玩家如何移動它們總是面向玩家。而在短暫的動畫過程中可能會變換大小和旋轉,並去循環 Sprite 動畫。

多數粒子是可以穿過牆面的,而部分粒子(ex: 煙霧)則與實心方塊碰撞,並在蜘蛛網中會被減速,但它們並不受其他實體的影響。

另對於遊戲機制有影響的粒子效果基本還會顯現在 Minimal 設定之下。

Sprite

Sprite 是電腦圖形和遊戲的術語,指整合到場景或環境中的 2D 圖像或動畫。通常由多張不同動作的圖片組成循環動畫,避免遊戲角色在螢幕平移的滑稽情況,且可透過越多的禎數提供流暢的動態感。至今仍大量運用在 Platform, 2D RPG 等平面遊戲,到了 3D 則多都改由骨架進行控制。

圖片來源: Sunny Land on itch.io
2.1.2. 粒子效果的生成

簡單認識粒子的特性後,我們就能夠進一步開始透過指令進行更好的調整囉。

那由於涉及視覺設定上的觀感設定,我自己基本不會使用最基本的語法,能調整的太少了。

Python
/particle <particle_name> ~ ~ ~

那另外一種較詳細的寫法中,我們能夠進一步調整粒子的數量, 呈現範圍, 速度, 視野距離, 強制顯示, 可看見者,相對有非常多的調整。

Python
/particle <particle_name> ~ ~ ~ <delta> <speed> <count> [force|normal] [viewers]

在座標後方各位千萬別依照 Hint 乖乖地輸入座標。

這個 delta 區塊主要用來表示要呈現粒子效果的區域,而其中心區域就是我們前面指定的座標。而這邊的數值被放大了 8 倍,所以想要呈現在一格之中我們則要設置為 .125 .125 .125,而後方的 count 除了影響數覺效果外還能用來辨別例外。

接著先跳過來看 count 也就是粒子的總數,最高可到 32 bit 但前提是你的電腦承受的住。正如我們在 RPG 地圖 Boss Fight 難免遇到粒子效果造成的當機攻勢,生成越多粒子往往對玩家是種負擔。

而粒子會在 delta 的範圍內隨機擺放,以下為從左到右的指令範例。可以發現即使再多的粒子在同個地點也沒有多少用處,而在 delta 的直徑範圍內除了縮放外還能針對樣式做調整。

Python
/particle flame ~ ~3 ~ 0 0 0 0 100 normal
Python
/particle flame ~ ~3 ~ .125 .125 .125 0 100 normal
Python
/particle flame ~ ~3 ~ .125 .5 .125 0 100 normal

但在 count = 0 的時候不是沒有粒子,在此時的 delta 則等同於 Motion 設定,配合 speed 從隨機擴散變為直線射出粒子。

針對音階符與 entity_effect 則用來決定粒子的顏色,色彩數值由 delta x speed 進行計算。

那 speed 概念正如其名代表粒子的移動速度,但其活性視粒子效果反而不同。在下方的範例中分別是速度 0 與 0.05 來呈現火焰,可以看到在 0.05 的狀況下火焰就已經明顯向外擴散。

但也不是說速度越高一定越糟,有些比較遲鈍或會下墜的粒子效果反而要到 1 才會變平常所見的樣貌。

另外當然也有完全不受影響的案例。

後方兩項都是選填的針對玩家的顯示設定,本身的預設值分別為 normal 與 @a ,但我自己習慣上還是加上 normal 提醒自己這邊還有參數可以設定。

在 Minecraft Wiki 之中雖然只寫到 normal 與 force 用於顯示於 32 或 512 格之距離。

但 force 還可強制在 minimal 設定下也看到效果,適合針對地圖製作中必要的元素避免影響遊戲。

最後尾端的設定則常用於遊戲分組的時候,比如殺手或間諜能夠獨立看到特殊的機關進一步幹些壞事。以下範例以 tag = viewer 進行呈現。

Python
/particle flame ~ ~3 ~ .125 .5 .125 0 1 normal @a[tag=viewer]

2.2. 實作體驗 – 旋轉法陣

2.2.1. 活用工具

首先到 GitHub 下載【該工具】,麻煩注意系統需求的部分,各位可能還要額外安裝 .NETCore 3.1 才能執行。

接著我們能夠到【該網站】下載圖檔,習慣性按下 Preview,接著依照以下設定。

簡單講解下齁,我們首先設為相對座標,這樣法陣才能夠進行旋轉。而為了放在地面則設為 Z-X 。接著將法陣對齊中心,並取消 Autosize 直接設置直徑為 4 。

接著開啟 More Settings 調整粒子效果,那範例這我使用的是附魔文字的 enchant,並且將顯示設定改為 normal,就可以輸出 mcfunction 。

接著到專案目錄進入 functions 目錄之中,複製與檔名相同的檔案。

2.2.2. 指令測試

接著貼到我們的 Datapack 之中做成 function 在遊戲中進行使用。那方便起見我們就偷懶用下指令方塊進行測試。

我們首先準備一個 Repeat 指令方塊,讓盔甲座持續的旋轉。

Python
execute as @e[type=minecraft:armor_stand] at @s run tp @s ~ ~ ~ ~6 ~

接著在後方接個 Chain 指令方塊,在盔甲座底下秀出魔法陣。

Python
execute as @e[type=minecraft:armor_stand] at @s run function |YOUR_FUNCTION|

大功告成!會旋轉的法陣就是如此簡單,對於地圖擺設或技能特效都十分實用。

3. 後話


靈活運用這些粒子效果,你可以創造出極具視覺衝擊力的場景,並將你的想法具象化為動態效果,讓你的 Minecraft 創作更上一層樓。

那由於篇幅關係,我們將 /playsound 拆出額外進行解說,另外也有準備額外實作進行音樂的添加,各位可以期待一下。

4. 參考


[1] Commands / particle — Minecraft Wiki
https://minecraft.fandom.com/wiki/Commands/particle

[2] Image Particle Generator – by Legitmoose
https://www.youtube.com/watch?v=1DjAt-WuJFA

5. 額外


[1] Animated Particle Plotter – by Cloud Wolf
https://www.youtube.com/watch?v=YFDo5Inn7x8

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.