【Defold】ピクミンの様な群衆表現に使える「DefArmy」アセット

2020/07/12Defold, DEVELOP

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

作成できる群衆パターン

カスタマイズも出来ます。以下はサンプルを実行した結果です。

お知らせ

Posted by kazupon