【Defold】ピクミンの様な群衆表現に使える「DefArmy」アセット
DefArmy はピクミンの様な、隊列を組む様なゲームに使えます。
目次
アセットページ
https://defold.com/assets/defarmy/
ライブラリのURL
https://github.com/dev-masih/defarmy/archive/master.zip
依存するライブラリ
なし。
使い方
基本的な使い方はとてもシンプルです。まず、群衆となるキャラクターのGameObjectに以下の様なスクリプトを割り当てます。
go.property("army_id", 1)
-- require defarmy
local defarmy = require("defarmy.defarmy")
function init(self)
-- army_id は 生成元から受け取る
self.soldier_id = defarmy.soldier_create(go.get_position(), vmath.vector3(0, 1, 0), self.army_id)
end
-- 更新
function update(self, dt)
-- 移動
local soldier_position, soldier_rotation = defarmy.soldier_move(self.soldier_id, go.get_position(), 80 * dt)
go.set_position(soldier_position)
go.set_rotation(soldier_rotation)
end
そして、そのGameObjectを生成します。
-- require defarmy
local defarmy = require "defarmy.defarmy"
function init(self)
msg.post(".", "acquire_input_focus")
-- 群衆の型を決めます。
self.army_is_sticky = true
self.army_pattern = defarmy.PATTERN.BOTTOM_TO_TOP_SQUARE
-- 隊列設定を作成します。中心点、向き、隣合うゲームオブジェクトとの間隔などを設定します。
self.army_id = defarmy.army_create(vmath.vector3(250, 250, 0), vmath.quat(), 25, self.army_is_sticky, self.army_pattern)
-- 群衆となるキャラを作成します。
for i = 1, 50 do
factory.create("#factory", vmath.vector3(250, 250, 0), nil, { army_id = self.army_id }, 0.45)
end
end
作成できる群衆パターン
カスタマイズも出来ます。以下はサンプルを実行した結果です。