πΊ 벑ν°μ νλ ¬λ‘ μ΄ν΄νλ μΊλ¦ν° μ΄λ – κ²μ κ°λ° μν μμ μ 리
κ²μμμ μΊλ¦ν°κ° μμ°μ€λ½κ² μμ§μ΄λ κ²μ²λΌ 보μ¬λ, μ€μ λ‘λ **벑ν°(Vector)μ νλ ¬(Matrix)**λΌλ μν κ°λ
μ΄ λ€μμ μμ§μμ κ³μ°νλ€.
μ΄λ² κΈμμλ 벑ν°μ νλ ¬μ κΈ°λ³Έ κ°λ
λΆν°, Unityμμ μΊλ¦ν° μ΄λ ꡬνκΉμ§ μ½κ² νμ΄λ³΄κ² λ€.
1. 벑ν°(Vector)λ?
-
ν¬κΈ°μ λ°©ν₯μ κ°μ§ λ°©ν₯ κ°
-
2D 벑ν°:
(x, y)
→ xμΆ λ°©ν₯, yμΆ λ°©ν₯ -
3D 벑ν°:
(x, y, z)
→ 3μ°¨μ 곡κ°
μμ: μΊλ¦ν° μ΄λ
→ 벑ν°λ λ°©ν₯ + μλ κ³μ°μ ν΅μ¬
2. λ²‘ν° μ°μ° κΈ°λ³Έ
-
λ§μ : λ 벑ν°μ λ°©ν₯κ³Ό ν¬κΈ° ν©μ°
-
λΊμ : λͺ©ν μ§μ κ³Ό νμ¬ μμΉ μ°¨μ΄ → μ΄λ λ°©ν₯
-
μ€μΉΌλΌ κ³±: λ²‘ν° ν¬κΈ° μ‘°μ (μλ μ‘°μ )
-
μ κ·ν(Normalize): ν¬κΈ°λ₯Ό 1λ‘ λ§λ€μ΄ λ°©ν₯λ§ νμ©
→ λͺ©ν μ§μ μ ν₯ν΄ μΌμ μλλ‘ μ΄λ
3. νλ ¬(Matrix)λ?
-
λ²‘ν° λ³νμ μν 2D/3D μν ꡬ쑰
-
νμ (Rotation), μ΄λ(Translation), νλ/μΆμ(Scale) μ μ© κ°λ₯
-
Unity λ΄λΆμ μΌλ‘ Transformμ νλ ¬ μ°μ°μΌλ‘ μ²λ¦¬
μμ: νμ
→ YμΆ κΈ°μ€μΌλ‘ λ§€ νλ μ 90λ/sec νμ
4. λ²‘ν° + νλ ¬λ‘ μ΄λ ꡬν
-
μμΉ μ΄λ:
position += direction * speed * deltaTime
-
νμ :
transform.rotation = Quaternion.Euler(...)
→ νλ ¬/μΏΌν°λμΈ μ μ© -
μ€μΌμΌ:
transform.localScale = new Vector3(1, 1, 1)
μ¦, μΊλ¦ν° μ΄λμ **벑ν°(λ°©ν₯, μλ) + νλ ¬(νμ , λ³ν)**μ κ²°ν©μΌλ‘ λ§λ€μ΄μ§λ€.
5. λ§λ¬΄λ¦¬
벑ν°μ νλ ¬μ μ΄ν΄νλ©΄,
-
νλ μ΄μ΄, NPC, μΉ΄λ©λΌ μμ§μμ μ ννκ³ μμΈ‘ κ°λ₯νκ² μ μ΄
-
μ λλ©μ΄μ , ν¬μ¬μ²΄, μ΄λ κ²½λ‘ κ³μ° λ± κ²μ μ λ°μ ν΅μ¬ μνμ μ΄ν΄
π λ€μ κΈμμλ μ€λ ₯, ν¬λ¬Όμ μ΄λ 곡μμΌλ‘ μ ν/ν¬μ¬μ²΄ ꡬνμ λ€λ€μ 물리 κΈ°λ° μμ§μμ ꡬνν΄λ³΄κ² λ€.
λκΈ
λκΈ μ°κΈ°