Add-On開發教學 #5 自訂粒子 & 給實體添加粒子效果

Minecraft基岩版允許新增粒子(particle),粒子可用於輔助實體動畫,或用作槍械的煙霧特效。

粒子都是2D圖像,因此只有XY寬高二個數值。要新增粒子,只需要用到資源包。另外可以結合行為包讓粒子有條件顯示在實體上。

文章最後可以下載我製作的JoJo粒子範本。


影片版教學:


    製作粒子

    粒子不需要模型檔案,只由資源包裡粒子本身的json和材質圖片構成。
    使用JannisX製作的Snowstorm工具可以像建模一樣線上預覽、製作粒子,也能匯入做好的粒子檔案參考。這個程式也有VSCode擴充功能版

    1. 進入後就是編輯畫面。



    2. 按一下上方的Examples就能載入範本,例如彩虹、下雨。這時可以觀察左邊面板變數的變化。


    3. 或者按"Files","Import",從遊戲原版資源包的particles/資料夾選取json,載入遊戲中的粒子。



    4. 粒子的組件可以在左邊的面板調整,並且結果會馬上反映在右邊的畫面。
    組件的詳細說明看下一段,這裡簡單調整好之後點選"Files","Download"就會得到一個粒子的json檔案。
    這裡我製作了一個JoJo的粒子,是從範本裡面的"Fire"改造來的。


    5. 將粒子的json放到資源包的particles/資料夾,識別符為myparticle:jojogo
    粒子的材質"jojogo.png"放在/textures/particle/。另外我製作的Jojo粒子材質其實是長這樣,256x512:




    粒子的組件用途

    具體內容可參考官方文檔
    只看文字說明會比較抽象,直接來看Snowstorm裡面提供的選項:



    1. Emitter
    Mode: Steady為讓粒子連續產生,Instant為產生一次。
    Rate: 產生數量。

    2. Shape
    Mode: 選擇一群粒子生成的形狀,有point、disc、sphere、box可以選。

    3. Appearance: Size是粒子XY大小;Material可以選擇Alpha顯示透明圖層,或是Opaque不透明。Facing則是要朝向哪個方向。

    4. Motion: 可給粒子添加加速度,以及設定生成的方向。

    5. Lifetime: 設定粒子多久後會消失,預設使用Time的話就是按照Max Age所設定的時間,到了就會消失。

    6. Texture: 粒子的材質
    Texture Size: 粒子材質的實際圖片大小。

    (接下來的屬性如果要做動圖就會用到,例如遊戲中的火焰粒子)
    UV Start: 粒子的材質從UV哪個座標為起始點。
    UV Size: 粒子的UV大小。
    UV Step: 粒子動畫每步移動的UV距離。
    Max Frame: 最大畫格數,至少應該大於實際的畫格率。

    例如,原本我的粒子只是這樣:


    設定動畫後會快速切換成其他顏色:
    所以這個動畫有二個畫格,Max Frame就不應該小於2。


    particle指令用法

    要讓實體製造粒子,很多組件都能在觸發行為時順便生成,例如"minecraft:projectile"可設定拋射物的粒子。

    而/particle 指令也可以用來顯示自訂的粒子:

    /particle myparticle:jojogo ~ ~ ~

    基岩版的原版粒子列表可以參考這裡




    讓粒子跟著實體 (動畫)

    先了解如何新增實體,另外可以參考原版烈焰神和貓的檔案,看是如何生成粒子的。

    可在動畫(animation)畫格直接新增粒子,或者使用動畫控制器(animation controller)。

    1.首先在資源包entity/的實體檔案聲明要使用的粒子:

    //...
    "animations": {},
    "particle_effects": {
      //jojogo是粒子代號
      "jojogo": "myparticle:jojogo"
    },
    "scripts": {}
    //...


    2. 該實體的模型檔案裡必須用Blockbnech在骨骼新增定位器(locator)這個元素,例如我想要讓粒子附著在手上:



    3. 在動畫模式中,聲明要使用粒子(按時間軸上的"Animate Effect"魔術棒按鈕)

    左下角的Keyframe欄位,Effect就是實體檔案聲明的粒子效果代號。

    locator則是剛剛在實體模型新增的定位器。


    這樣這個動畫播放時就會產生粒子。



    也可以改在動畫控制器設定要顯示例子的時機:

    {
      "format_version": "1.10.0",
      "animation_controllers": {
        "controller.animation.shimakaze.move": {
          "states": {
            "default": {
              "animations": [
                {
                  "move": "query.modified_move_speed"
                }
              ],
              "particle_effects": [
                {
                  "effect": "jojogo"
                }
              ]
            }
          }
        }
      }
    }


    如果要讓粒子精確的附著在某一個骨骼,就加上定位器:

    {
      "format_version": "1.10.0",
      "animation_controllers": {
        "controller.animation.shimakaze.move": {
          "states": {
            "default": {
              "animations": [
                {
                  "move": "query.modified_move_speed"
                }
              ],
              "particle_effects": [
                {
                  "effect": "jojogo",
                  "locator": "locator"
                }
              ]
            }
          }
        }
      }
    }


    範本下載

    只有資源包,按這裡下載。
    也可於Github檢視原始碼。
    在實體上新增粒子的原理已經寫在上面了,剩下的是少女的秘密。

    留言

    發佈留言

    此網誌的熱門文章

    Minecraft基岩版多人連線教學: 方法一覽

    【詳細解說】什麼是Minecraft基岩版,跟Java版有什麼差?

    Minecraft基岩版安裝模組(Add-On)&資源包&光影教學