panda3d: tip - grizlupo/_ GitHub Wiki
์ขํ๊ณต๊ฐ ๋ฐ๊พธ๊ธฐ
์ฃผ์ด์ง ์ขํ๋ฅผ ๋ค๋ฅธ ์ขํ๊ณต๊ฐ์ ์ขํ๋ก ๋ฐ๊พธ๋ ค๋ฉด?
ํ ์ขํ๊ณต๊ฐ์ ๋ชฉํ ์ขํ๊ณต๊ฐ์ผ๋ก์ ๋ณํ์ ๋ง๋ ๋ค.
transform = src_space.get_transform(dst_space)
๋ฐ๊ฟ ์ขํ์ ๋ณํ์ ์ ์ฉํ๋ค.
point * transform->get_mat()
CollisionHandlerEvent ํจํด
CollisionHandlerEvent์ ๋ ๋ฌผ์ฒด๊ฐ ์ฒ์์ผ๋ก ์ถฉ๋ํ ๋, ์ถฉ๋์ด ๊ณ์ ์ด์ด์ง ๋, ์ถฉ๋์ ๋ฒ์ด๋ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ๋ค.
์ถฉ๋ ์ด๋ฒคํธ๋ ํค๋ณด๋๋ ๋ง์ฐ์ค ์ด๋ฒคํธ์ ๋ฌ๋ฆฌ ๋ฏธ๋ฆฌ ์ ํด์ง ์ด๋ฆ์ด ์๋ ๊ฒ ์๋๋ผ addInPattern, addAgainPattern, addOutPattern์ผ๋ก ์ด๋ฆ์ ๋ชจ์์๋ฅผ ๋ฑ๋กํ๊ฒ ๋์ด ์๋ค.
์๋ฅผ ๋ค์ด handler.addInPattern("%fn-into-%in")
์ด๋ผ๊ณ ํ๊ณ , ๋ ๋ฌผ์ฒด์ ์ด๋ฆ์ด comet
๊ณผ earth
๋ผ๋ฉด comet-into-earth
๋ผ๋ ์ด๋ฆ์ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ฆ, base.accept("comet-into-earth", self.apocalypse)
๋ผ๊ณ ํ๋ฉด ํ์ฑ๊ณผ ์ง๊ตฌ์ ์ถฉ๋์ด ๊ฐ์ง๋ ๋ ์ข
๋ง ๋ฉ์๋๊ฐ ํธ์ถ๋๊ฒ ๋๋ค.
ํจํด์ ์ฌ์ฉ๋ %fn๊ณผ %in์ด ๊ฐ๊ฐ From ๋ฌผ์ฒด์ ์ด๋ฆ๊ณผ Into ๋ฌผ์ฒด์ ์ด๋ฆ์ผ๋ก ๋์ฒด๋์ด ์ค์ ์ด๋ฒคํธ ์ด๋ฆ์ด ๋๋ค. ๋ฐ๋ผ์ ๊ทธ ๋ฐ์ sun
์ด๋ moon
๊ฐ์ ๋ฌผ์ฒด๊ฐ ๋ ์๋ค๋ฉด moon-into-earth
๋ผ๊ฑฐ๋ earth-into-sun
๊ฐ์ ์ด๋ฒคํธ๋ ๊ฐ๋ฅํ๋ค.
๋ฌผ์ฒด์ ์ด๋ฆ๋ฟ ์๋๋ผ ๋ฌผ์ฒด์ ํ๊ทธ๋ ์ฌ์ฉํ ์ ์๋ค. ํ๊ทธ๋ getNetTag
๋ก ๊ฒํ ๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฌผ์ฒด์ ์ง์ ๋ฑ๋ก๋ ๊ฒ์ด ์๋๋๋ผ๋ ๊ณ์ธต ๊ตฌ์กฐ ๋ด์์ ์ฐพ์์ง๊ธฐ๋ง ํ๋ฉด ๋๋ค.
%(tag)ft, %(tag)it๊ฐ ๊ฐ๊ฐ ํ๊ทธ์ ๊ฐ์ผ๋ก ๋์ฒด๋๋ค.
์๋ฅผ ๋ค์ด ๋ฌผ์ฒด์ ObjectKind
๋ผ๋ ํ๊ทธ๊ฐ ์๊ณ , star
, planet
, satellite
๋ฑ์ ๊ฐ์ด ๊ฐ๋ฅํ๋ค๋ฉด, %(ObjectKind)ft-into-%(ObjectKind)it
๋ผ๋ ํจํด์ planet-into-star
๋ satellite-into-planet
๊ฐ์ ์ด๋ฒคํธ ์ด๋ฆ์ด ๊ฐ๋ฅํ๋ค. ํน์ ์ด๋ฆ๊ณผ ํ๊ทธ๋ฅผ ์์ด์ %(ObjectKind)ft-into-%in
ํจํด์์๋ planet-into-sun
๊ฐ์ ์ด๋ฒคํธ ์ด๋ฆ๋ ๊ฐ๋ฅํ๋ค.
%(tag)fh, %(tag)fx, %(tag)ih, %(tag)ix๋ ๊ฐ๊ฐ ํ๊ทธ๊ฐ ์๋์ง ์๋์ง๋ฅผ ํ๋จํ๋ค. ๋์ฒด
๊ฐ ์๋๋ผ ํ๋จ
๋ง ํ๋ค. ๋ฐ๋ผ์ ์ค์ ์ด๋ฒคํธ ์ด๋ฆ์์ ์ด ๋ถ๋ถ์๋ ์๋ฌด๊ฒ๋ ์๋ค.
์๋ฅผ ๋ค์ด starship
์ด๋ผ๋ ๋ฌผ์ฒด๊ฐ ์๋ค๋ฉด, %fn-into-all%(ObjectKind)ih
ํจํด์ ๋ํด starship-into-all
์ด๋ผ๋ ์ด๋ฒคํธ ์ด๋ฆ์ด ๊ฐ๋ฅํ๋ฐ, ์ด๋ Into ๋ฌผ์ฒด๊ฐ ObjectKind๋ผ๋ ํ๊ทธ๋ฅผ ๊ฐ์ง๊ณ ์์ ๋๋ง ๊ฐ๋ฅํ๋ค. ํ๊ทธ์ ๊ฐ์ ์๊ด์๋ค. star
์ฌ๋ planet
์ฌ๋ ์๊ด์๋ค. ํ๊ทธ๊ฐ ์๊ธฐ๋ง ํ๋ฉด ๋๋ค.
%fs์ %is๋ CollisionSolid
์ tangible
๊ฐ์ผ๋ก ๋์ฒด๋๋ค. tangible์ด๋ฉด 't' intangible์ด๋ฉด 'i'๋ก ๋์ฒด๋๋ค. ์ค๋ช
์์ tangible์ CollisionHandlerPusher
๊ฐ ๋ฌผ์ฒด๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค์ ์ธ ๊ฒ์ผ๋ก ๋์ด ์๋ค. tangible์ด๋ฉด ๋ค๋ฅธ ๋ฌผ์ฒด๊ฐ ์ด๋ฅผ ๊ฐ๋ก์ง๋ฅผ(intersect) ์ ์๊ณ , intangible์ด๋ฉด ๋ฌด์ํด ๋ฒ๋ฆฌ๋ฏ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์๋๋ค๊ณ ์ค๋ช
ํ๊ณ ์๋ค. ๋ฐ๋ผ์ %fs์ %is๋ CollisionHandlerPusher
๊ฐ ์๋ ํธ๋ค๋ฌ์์ ์ด ๊ฐ์ ํ์ฉํ๊ธฐ ์ํ ์ฉ๋๋ก ํ์
๋๋ค.
๋ง์ง๋ง์ผ๋ก %ig๋ Into ๋ฌผ์ฒด๊ฐ CollisionNode
์ธ์ง GeomNode
์ธ์ง์ ๋ฐ๋ผ ๊ฐ๊ฐ 'c'์ 'g'๋ก ๋์ฒด๋๋ค. ๋ญ์ง ๊ฐ์ ์ค๋๋ฐ ๋ฑํ ์ด๋์ ์ฐ๋ฉด ์ข๊ฒ ๋ค ์ถ์ ์๊ฐ์ ์๋ค.