

μ΄ λ¬Έμμμλ 2D μ½ν
μΈ μ λν Unityμ νλ‘μ μ
μμ μ λν΄ μ€λͺ
νμ§λ§, 3D μ½ν
μΈ μμλ λΉμ·ν μ΄μ λ‘ μ¬μ©λ©λλ€.
μ€μ λ‘ λ§ν¬ μ΄μ λμΌν κΈ°λ²μ μ¬μ©νμ¬
ꡬμμΈ 2D μ €λ€μ μ μ€:μ λ€μ νΈλΌμ΄ν¬μ€2 κ²μμ λͺ¨μκ³Ό λ κ°κΉκ² ꡬννμ΅λλ€.
μ¬μ§μ΄ μ΄ κ²μμ μμ²μμκ² λͺ
λ°±ν μ곑μ μΌμΌν€μ§ μκ³ λ μ€ν
λ μ€μ€μ½ν½ 3Dλ‘ λ λλ§λμμ΅λλ€.

Unityμμ 컀μ€ν
ν¬μμ¬μ©
κΈ°λ³Έμ μΌλ‘ λͺ¨λ 3D μμ§μμλ λ§€νΈλ¦μ€λ₯Ό μ¬μ©νμ¬ μλμ μ€λΈμ νΈλ₯Ό νλ©΄μΌλ‘ λ³νν©λλ€.
μ΄ νλ ¬μ λͺ¨λΈ-λ·°-ν¬μ νλ ¬μ΄λΌκ³ νλ©°, μΈ λΆλΆμΌλ‘ λλ©λλ€.
첫째, λͺ¨λΈ λ§€νΈλ¦μ€λ λͺ¨λΈ μ’νμμ μλ μ’νλ‘ λ³νν©λλ€(Transform.localToWorldMatrix).
κ° κ°μ²΄λ λ³νμ λ°λΌ λ€λ₯Έ κ°μ²΄μ λν΄ μλμ μΈ μμΉλ₯Ό μ§μ νλ μ체 λͺ¨λΈ νλ ¬μ μ»μ΅λλ€.
λ€μμΌλ‘, λ·° λ§€νΈλ¦μ€λ μλ μ’νλ₯Ό μΉ΄λ©λΌμ μλμ μΈ μ’νλ‘ λ³νν©λλ€(Camera.worldToCameraMatrix).
λ§μ§λ§μΌλ‘ ν¬μ λ§€νΈλ¦μ€λ μΉ΄λ©λΌ μλ μ’νλ₯Ό νλ©΄ μ’νλ‘ λ³νν©λλ€(Camera.projectionMatrix).
λ·°μ ν¬μ νλ ¬μ μ¬μ λͺ¨λ μ€λΈμ νΈμ μν΄ κ³΅μ λλ©° νλ©΄μ λν μ 체 ν¬μμ κ²°μ ν©λλ€.
μΌλ°μ μΌλ‘ ν¬μ νλ ¬μ μΉ΄λ©λΌκ° λ λλ§νλ μ₯λ©΄μ μ§κ΅ ν¬μ λλ μκ·Ό ν¬μκ³Ό μ 체 μ€μΌμΌ μ€ νλλ₯Ό μ ννλ μν λ§ λ΄λΉν©λλ€.
μΉ΄λ©λΌμ λ μ¦λ₯Ό μκ°νλ©΄ μ½μ΅λλ€.
컀μ€ν
ν¬μμ μ€μ νλ €λ©΄ λ¨Όμ μ§κ΅ λλ ν¬μ λ·°λ₯Ό μνλμ§ μ νν©λλ€.
νλ‘μ μ
λ§€νΈλ¦μ€κ° ν΄λΉ λΆλΆμ μ²λ¦¬νλ©°, Unityμ μΌλ° μΉ΄λ©λΌ μΈμ€νν°λ₯Ό μ¬μ©νμ¬ μ€μ ν μ μμ΅λλ€.
κ·Έλ° λ€μ κ° μΆμ΄ νλ©΄μ κΈ°μ€μΌλ‘ κ°λ¦¬ν€λ λ°©ν₯μ λ·° λ§€νΈλ¦μ€κ° μ²λ¦¬ν©λλ€. μΌλ°μ μΌλ‘ Unityλ μΉ΄λ©λΌμ νΈλμ€νΌμ λ°λΌ λ§€ νλ μλ§λ€ μ΄ λ§€νΈλ¦μ€λ₯Ό μ
λ°μ΄νΈνμ§λ§, Camera.worldToCameraMatrix νλ‘νΌν°μ μ°λ©΄ 컀μ€ν
κ°μΌλ‘ μ΄ λ§€νΈλ¦μ€λ₯Ό μ€λ²λΌμ΄λν©λλ€.
μ§λ©΄μ΄ μ΄λ»κ² 보μ΄λμ§μ λ§μ‘±νλ―λ‘ xμΆμ΄λ yμΆμ μΆλ ₯μ λ³κ²½ν νμκ° μκ³ zμΆλ§ λ³κ²½νλ©΄ λ©λλ€.
ꡬ체μ μΌλ‘, μλμ μμͺ½ λ°©ν₯μ΄ νμ μΉ΄λ©λΌμ μμͺ½ λ°©ν₯κ³Ό μΌμΉνκΈ°λ₯Ό μν©λλ€.
νλ ¬μ κ° μ΄μ μΆμ ν΄λΉνλ―λ‘ zμΆμ λν μ΄λ§ λ³κ²½νλ©΄ λ©λλ€.
μ΄λ₯Ό μν μ½λλ λ€μκ³Ό κ°μ΅λλ€.
.
λ·° λ§€νΈλ¦μ€λ₯Ό μ€μ νκΈ°μ κ°μ₯ μ’μ μμΉλ μΉ΄λ©λΌμ OnPreCull() μ΄λ²€νΈ λ©μλμ
λλ€.
μ΄ λ©μλλ λͺ¨λ μ
λ°μ΄νΈ λ©μλμ λ³νμ΄ λλ ν λ λλ§ μμ
μ΄ μμλκΈ° μ μ νΈμΆλ©λλ€.
μ μ μ
λ ₯ μ’ν
λ§μ°μ€λ ν°μΉ μ
λ ₯μ μ¬μ©νλ κ²μμμλ νλ©΄ μ’νλ₯Ό μλ μ’νλ‘ λ³νν΄μΌ ν κ²½μ°κ° λ§μ΅λλ€.
κΈ°λ³Έμ μΈ 2D κ²μμμλ Camera.ScreenToWorldPoint()λ‘ μΆ©λΆνμ§λ§, 컀μ€ν
ν¬μμμ¬μ©ν λλ λ 볡μ‘ν΄μ§λλ€.
κΈ°μ‘΄ Unity APIλ₯Ό μ¬μ©νμ¬ λ μ΄(Ray,κ΄μ )λ₯Ό μ¬μ©νμ¬ μ¬κ³Όμ κ΅μ°¨μ μ νμΈν μ μμ§λ§, νλ©΄λ§ μλ κ²½μ° λ κ°λ¨ν λ°©λ²μ΄ μμ΅λλ€.
λͺ μ€μ μ½λλ§ λ μΆκ°νλ©΄ μ€ν¬λ¦°ν¬μλν¬μΈνΈ()μ μ체 λ²μ μ μμ±νμ¬ νλ©΄μ μ’νμ ν¨κ» μλνλλ‘ λ§λ€ μ μμ΅λλ€.
κΈ°λ³Έ μμ΄λμ΄λ Unityκ° λ·° ν¬μ νλ ¬μ μ¬μ©νμ¬ μλ μ’νλ₯Ό νλ©΄μΌλ‘ λ³ννλ―λ‘ ν΄λΉ νλ ¬μ μμ μ¬μ©νλ©΄ νλ©΄ ν¬μΈνΈλ₯Ό μλμ λ³νν μ μλ€λ κ²μ
λλ€. ZμΆμ 무μνλλ‘ νλ ¬μ λ³κ²½νλ©΄ μ¬ κΉμ΄λ₯Ό 무μνκ³ μ§λ©΄μ μλ μ§μ λ§ μ»μ μ μμ΅λλ€

κΈμκ° μ€κ°μ μ§€λ €μ λ€μνΈμ λλ¨Έμ§ μΆκ°λ²μν¨
μ½λ μ΄μΌ μ νμμΌλ‘ μ¬λ Έμ§ νκ³ λλκ·Έν΄λ³΄λ μ΄λ―Έμ§μꡬλ γ γ
μ½λ μ€λν«μ΄ μλμ μν¨
https://youtu.be/J-cfVwYNQSk?si=Z78-8Wz5THKv63as&t=1592
μ΄κ±° μ’λλΌ μ°Έκ³ λ§μ΄ν¨. κ·Όλ° μ½λκ° μμ΄μ. λκ° μ΄λ»κ² νλλ μ΄λ°κ±° μ’κΈ΄νλ°. κ·Έ ννΈ νλ μμΌλ VFXλ μμ§μ¬μΌνλ€λκ±° λ°°μ
μΈμμΈλ μ§μ§ μλ§λ€μλ€ μκ°νλλ° λμ΄λκ° λ μ΄λ €μμ μ νκ° λ°μ κ²μμ΄λΌ μκ°ν¨ λ
μ λν° μ½λ¦¬μ λλ¦ μμκ°μλλ―