Spine nodes - kuimoani/defold GitHub Wiki
๊ฒ์ ์ค๋ธ์ ํธ์์ ๋ฟ๋ง ์๋๋ผ GUI ์ ๋๋ฉ์ด์ ์์๋ ์คํ์ธ ๋ณธ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋งค๋ด์ผ์ GUI ์ฌ์์ ์คํ์ธ ์ ๋๋ฉ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ํฌํธํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
ํ์ฌ, ์คํ์ธ ๋ ธ๋๋ ์คํ์ธ ์ด๋ฒคํธ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. SpineModel ๊ฒ์ ์ค๋ธ์ ํธ๋ ์ ๋๋ฉ์ด์ ํ์๋ผ์ธ์ ์ด๋ฒคํธ๋ฅผ ํฌํจํ๊ณ ๊ฒ์์ค๋ธ์ ํธ์ ๋ฉ์ธ์ง๋ฅผ ์ ์กํ ์ ์์ง๋ง ์คํ์ธ ๋ ธ๋์์๋ ์ง์๋์ง ์์ต๋๋ค.
์ํฌํธ๋ ์คํ์ธ ๋ณธ ์ ๋๋ฉ์ด์ (Spine bone animation)์ ๊ฒ์ ์ค๋ธ์ ํธ ๋ฟ ์๋๋ผ GUI ์ฌ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค(SpineModel ์ปดํฌ๋ํธ๋ฅผ ํตํด์). Defold์์ ์คํ์ธ ๋ณธ ์ ๋๋ฉ์ด์ ์ ๋์์ํค๊ธฐ ์ํด, ๋จผ์ ์ ๋๋ฉ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ํฌํธํ๊ณ ์คํ์ธ ์ฌ(Spine Scene) ๋ฆฌ์์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํ ์ค๋ช ์ [Spine animation](Spine animation) ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
GUI ์ฌ์์ ์คํ์ธ ์ฌ ๋ฆฌ์์ค์ ์ปจํ ์ธ ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, Outline ์ฐฝ์ Spine Scenes ํด๋์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ ค Add Spine Scene ๋ฉ๋ด๋ฅผ ์ ํํ๊ณ ์ฌ์ฉํ๋ ค๋ ์คํ์ธ ์ฌ์ ์ ํํฉ๋๋ค.
์ด์ ์คํ์ธ ๋ ธ๋๋ฅผ ๋ง๋ค๋ฉด(Outline ์ฐฝ์ Nodes ํด๋์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ๋๋ฅด๊ณ Add Spine Node ์ ํ) ๊ทธ์ ๋ฐ๋ฅธ ์ ์คํ์ธ ๋ ธ๋์ ํ๋กํผํฐ๋ค์ ์ค์ ํ ์ ์์ต๋๋ค.
์ด ๋ ธ๋์ ๋ฐ์ดํฐ ์์ค๋ก ์ฌ์ฉํ ์คํ์ธ ์ฌ
์ฌ์ด ์ด๊ธฐํ ๋ ๋ ์๋์ ์ผ๋ก ์ฌ์ํ ์ ๋๋ฉ์ด์
์ฌ์ด ์ด๊ธฐํ ๋ ๋ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ ์คํจ
์คํ์ธ ๋ ธ๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ฐํ์์ ์ ์ดํ ์ ์์ต๋๋ค. ๋ ธ๋์์ ์ ๋๋ฉ์ด์ ์ ์์ํ๋ ค๋ฉด gui.play_spine() ํจ์๋ฅผ ํธ์ถํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
local catnode = gui.get_node("cat_note")
local blend_time = 0.3
gui.play_spine(catnode, hash("run"), gui.PLAYBACK_ONCE_FORWARD, blend_time, function(self, node)
print("Animation done!")
end)์คํ์ธ ์ค์ผ๋ ํค์์ ๋ผ ๊ฐ๊ฐ์ GUI ๋ ธ๋๋ก ์กด์ฌํ๊ฒ ๋ฉ๋๋ค. ์ด ๋ ธ๋๋ค์ ์คํ์ธ ์ค์ ์์ ์ง์ ๋ ์ด๋ฆ์ ๋ฐ๋ผ ์ง์ด์ง๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ๋ ธ๋๋ฅผ ๋ค๋ฅธ ๋ณธ ๋ ธ๋์ ์ฐ๊ฒฐํ๋ ค๋ฉด, gui.get_spine_bone() ๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ ๋ณธ ๋ ธ๋๋ฅผ ์ด๋ฆ์ผ๋ก ์กฐํํด์ ์์ ๋ ธ๋๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
-- text ๋
ธ๋๋ฅผ cat์ tail์ ์ฐ๊ฒฐํจ
local cat = gui.get_node("cat_node")
local textnode = gui.new_text_node(vmath.vector3(400, 0, 0), "Hello tail!")
local tail = gui.get_spine_bone(cat, "tail")
gui.set_parent(textnode, tail)๋ํ ๋ชจ๋ ๋ณธ์ ์คํ์ธ ๋ ธ๋์ ์ด๋ฆ๊ณผ "/"๋ฅผ ์ ๋์ด๋ก ์ฌ์ฉํ์ฌ go.get_node() ๋ก ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
-- text ๋
ธ๋๋ฅผ cat์ tail์ ์ฐ๊ฒฐํจ
local textnode = gui.new_text_node(vmath.vector3(400, 0, 0), "Hello tail!")
local tail = gui.get_node("cat_node/tail")
gui.set_parent(textnode, tail)


