近期因疫情肆虐,礦工們務必勤加洗手,並且注意身體健康,然後來投票選出喜愛的文章唷。
LV. 25
GP 1k

【教學】使用Add-on在遊戲中新增生物實體

樓主 ivon852 ivon852
GP16 BP-
現在基岩版的Add-on擁有新增實體的能力,此功能深受玩家喜愛,是很大的進步。其餘還有新增方塊、物品、粒子等等。

這是外國玩家做的龍

而這是我做的一個小水獺(掩面)。


本文目標:使用Addon加入一個擁有自己模型的新實體,加入生怪蛋,並擁有基本的動作能力。

首先要從資源包開始,請先參考基本教學

manifest.json做好之後,新增一個entity的資料夾,裡面新增一個代表實體的檔案。這裡取名叫做boku.json

再來回到資料夾上一層,新增materials資料夾,裡面新增叫做entity.material的檔案,輸入:
{
"materials": {
"version": "1.0.0", "newmob:entity_alphatest": {}
}
}

回到資料夾上一層,新增render_controllers資料夾,裡面新增一個newmob.render_controllers.json的檔案, 輸入:
{
"format_version": "1.8.0",
"render_controllers": {
  "controller.render.newmob": {
   "textures": [ "Texture.default" ],
   "geometry": "Geometry.default",
   "materials": [ { "*": "Material.default" } ]
  }
}
}


回到entity資料夾,檔案boku.json裡面填入以下內容:
{

  "format_version": "1.10.0",
  "minecraft:client_entity": {
   "description": {
    "identifier": "newmob:boku",
    "materials": {
     "default": "newmob"
    },
    "textures": {
      "default": "textures/entity/boku"
    },
    "geometry": {
     "default": "geometry.boku"
    },
    "render_controllers": [ "controller.render.newmob" ],
    "spawn_egg": {
     "texture": "spawn_boku",
     "texture_index": 0
   }


}
}
}
注意identifier這一行,這個代表的是實體的識別代號。一般會以「xx:xx」的形式表示。 例如這裡我用newmob:boku
materials使用newmob,也就是前面我已經定義好的entity.material
textures為材質路徑。
geometry則為下一步要說的東西。
render_controllers也用newmob,同樣是前面render_controllers就定義好的。
spawn_egg為生怪蛋,一樣要先指定材質路徑。

現在你的資料夾應該有以下項目:

接下來要製作的是語言檔案,就像生怪蛋在遊戲中你不希望它顯示的物品名稱是item.spawn_egg之類的吧?我以繁體為例子,新增一個texts資料夾,裡面新增一個zh_tw.lang的檔案,輸入:
item.spawn_egg.entity.newmob:boku.name=生成 僕水獺
entity.newmob:boku.name=Boku
第一行的等號後方是物品要顯示的名稱。 第二行是實體的名字(目前沒什麼用)。

下一步,要開始建模了。



製作實體模型使用Blockbench這個軟體。在此簡介用法。
Blockbench可以在網頁直接執行(WebApp),也能安裝到電腦上,提供中文介面。

選擇新增基岩版模型。

全部填boku。材質高寬視模型精緻度決定,簡單的16x16就夠了。

點選右邊大綱的資料夾圖示,點選「添加組」,遊戲中稱為bone。
bone可以說是實體的「部位」,舉凡頭、腳、身體都分別是bone。至少一定要有一個bone存在。
「添加組」左邊的圖示「添加立方體」就是構成bone的最小單位cube。bone裡面可以包含很多個cube,但是cube不能在bone以外單獨存在。
在軟體中,為了方便管理,做成資料夾的形式,讓使用者可以自由添加cube到各個bone裡面。

新增bone後再新增一個cube,畫面就會出現立方體。

看向上方的工具列,點選來切換操作。

第一個移動就是移動立方體的座標,例如我拉藍色箭頭就能控制Z軸。

第二個尺寸可以調整長寬高。

第三個可以將立方體旋轉
(PS.現有Minecraft的機制不允許旋轉單個cube,要進行旋轉前請先點選bone)

旋轉有時候要要右邊元素面板設定「旋轉原點」,就是要以哪個座標作為旋轉軸心。

預設都是0,0,0,但如果你的cube不在那裡,那旋轉起來就會很奇怪,如下圖,使用旋轉的指令時,箭頭卻顯示在下方。
這個時候就要調一下了,或者直接按瞄準的符號「原點到幾何」直接以cube中點當旋轉軸心。

使用固有時制御,建了水獺模型出來。

接下來要畫材質。Blockbench支援直接生成貼圖分布,還能像Nova Skin一樣直接在模型上色。
按下右邊貼圖面板的「創建貼圖」,勾選「使用模板」。
分辨率使用32x32。

按右上角「畫板模式」切換到繪圖模式。你會看到左邊已經出現生成好的材質了。

接下來就可以開始繪畫了,提供的工具有筆刷和油漆桶。
油漆桶點擊後可為一個面填充顏色,筆刷則是一個像素一個像素的畫上去。

畫板網格則可以顯示像素的框框。

畫好皮膚後,先儲存模型的程式碼。 然後按下文件>導出>「導出基岩實體模型」

在剛才製作的資源包新增models資料夾,裡面新增entity資料夾,把這個json放進去。

接著要儲存材質。
資源包新增"textures"資料夾,裡面新增"mob"資料夾。
對材質點右鍵另存,儲存到該資料夾,檔名為boku.png

再來開小畫家繪製生怪蛋的材質。
畫好後textures資料夾裡面新增items資料夾,把這個檔案取名為spawn_boku.png,放進去。

至此建模、繪製材質告一段落...等等,還有一件事,在textures資料夾裡新增一個名叫item_texture.json的檔案,輸入:
{
  "resource_pack_name": "KanColle RP",
  "texture_name": "atlas.items",
  "texture_data": {
"spawn_boku": {
      "textures": "textures/items/spawn_boku"
}
  }
}
resource_pack_name為資源包名稱,就跟manifest.json裡寫一樣的就好。
關鍵是"spawn_boku":{}這段,告訴遊戲物品的材質路徑,也就是剛才生怪蛋的圖片放的地方。.png可以省略。



到這裡,你的資料夾應該有下列項目了。


接著來製作行為包吧。
行為包做好manifest.json後,新增entities資料夾,裡面新增boku.json,輸入:
(二條斜線的藍色字為註解,可以刪掉)
{
    "format_version": "1.13.0",
    "minecraft:entity": {
      "description": {
        "identifier": "newmob:boku", //這個實體的識別代號需跟資源包的一模一樣
        "is_spawnable": true, //設定能用生怪蛋召喚
        "is_summonable": true, //設定能用遊戲的/summon指令召喚
        "is_experimental": false
      },
  
      "components": {
        "minecraft:type_family": { //家族
          "family": [ "boku", "mob" ]
        },
        "minecraft:movement": { //移動速度
          "value": 0.21
        },
        "minecraft:health": { //設定血量
          "value": 99,
          "max": 99
        },  
        "minecraft:navigation.walk": { //走路的AI
          "can_float": false,
          "avoid_water": true,
          "avoid_damage_blocks": true
        },
"minecraft:navigation.generic": {
        "is_amphibious": false,
        "can_path_over_water": true,
        "can_swim": true,
        "can_walk": true,
        "can_breach": false,
        "can_sink": false
      },
        "minecraft:movement.basic": {
        },
        "minecraft:jump.static": {
        },
          "minecraft:scale": { //實體的縮放大小
          "value": 1.0
        },
        "minecraft:collision_box": { //實體的寬高
          "width": 1,
          "height": 2
        },
"minecraft:behavior.random_stroll": { //讓實體會隨意走動
"priority": 5 //優先級別
},
"minecraft:behavior.look_at_player": { //讓實體會看著玩家
"priority": 6,
"look_distance": 5
},
"minecraft:behavior.random_look_around": { //讓實體隨機亂看
"priority": 7
},
        "minecraft:physics": {}
      }
    }
  }

於是你完成了!一個基本的實體。
需要其他行為就往行為包的檔案添加吧,但是這時你可能會發現一個問題。

我的實體移動時沒有動作啊啊!!

所以,你就要學習如何用Blockbench做實體的動畫(animation)了... (待續)


本文使用的範例下載
16
-
未登入的勇者,要加入 2 樓的討論嗎?
板務人員:

1290 筆精華,昨天 更新
一個月內新增 2
歡迎加入共同維護。


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

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