NetworkRigibody - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki
๊ฐ์
Physics Addon
์๋ ํด๋ผ์ด์ธํธ ์์ธก ๋ฐ Rigidbody ๋ฐ Rigidbody2D ์ปดํฌ๋ํธ์ ๋๊ธฐํ์ ํ์ํ ์ปดํฌ๋ํธ ํฌํจ
- NetworkRigidbody3D State Authority์์ ๋ค๋ฅธ ํผ์ด(peer)๋ก Rigidbody ์ํ ๋๊ธฐํ
- NetworkRigidbody2D State Authority์์ ๋ค๋ฅธ ํผ์ด๋ก Rigidbody2D ์ํ ๋๊ธฐํ
- RunnerPhysicsSimulate3D ์ ํ์ ์ปดํฌ๋ํธ๋ก NetworkRunner GameObject์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, Fusion ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ฒ๋ฆฌ ์ง์
- RunnerPhysicsSimulate2D ์ ํ์ ์ปดํฌ๋ํธ๋ก NetworkRunner GameObject์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, Fusion Physics2D ์๋ฎฌ๋ ์ด์ ์ฒ๋ฆฌ ์ง์
์ฌ์ฉ๋ฒ
- Rigidbody ํ๋ฆฌํน(prefab) ๋๋ ์ฌ ๊ฐ์ฒด์ NetworkRigidbody3D(๋๋ 2D์ฉ NetworkRigidbody2D)์ NetworkObject ์ถ๊ฐ
- ์ด ์ปดํฌ๋ํธ๋ State Authority์์ ๋ค๋ฅธ ํผ์ด๋ก Rigidbody ์ํ ๋ณต์
- ํด๋ผ์ด์ธํธ ์์ธก ์ฌ์๋ฎฌ๋ ์ด์ ์ ์ํด Rigidbody ๋ฆฌ์ /์กฐ์
- RunnerSimulatePhysics3D(๋๋ ํด๋น๋๋ ๊ฒฝ์ฐ 2D)๋ฅผ NetworkRunner ํ๋ฆฌํน์ ์ถ๊ฐ
- ์ปดํฌ๋ํธ๋ Unity์
Physics.Simulate()
ํธ์ถ ์ฒ๋ฆฌ
- ๋ชจ๋ ์๋ฎฌ๋ ์ด์
/์ปจํธ๋กค๋ฌ ์ฝ๋๋
FixedUpdateNetwork()
๋ด์์ ์คํ๋๋๋ก ์์ฑ
ํ์ฅ / ์์
- NetworkRigidbody์ RunnerSimulatePhysics ์ปดํฌ๋ํธ๋ ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ๋๋ก ์ค๊ณ
- ํ๋ก์ ํธ์ ํน์ ์๊ตฌ์ ๋ง๊ฒ ์์ ๊ฐ๋ฅ (ํด๋์ค์ ์ผ๋ถ ๋ฉค๋ฒ๋ ๊ฐ์(vritual)์ผ๋ก ์ค์ ๋์ด ์์ด ์ค๋ฒ๋ผ์ด๋ ๊ฐ๋ฅ)
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ์ฐธ์กฐํ์ฌ ์์ฒด ํด๋์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์ง์ ์์
- Fusion์ ํต์ฌ ๋ด๋ถ๋ ์ด๋ฌํ ์ปดํฌ๋ํธ์ ์์กดํ์ง ์์ผ๋ฏ๋ก(์ผ๋ถ ์ํ ๋ฐ ๋ฐ๋ชจ๋ ์ ์ธ), ํ์์ ๋ฐ๋ผ ์์ ๊ฐ๋ฅ
NetworkRigidbody2D / NetworkRigidbody3D
NetworkRigidbody3D
์ NetworkRigidbody2D
๋ NetworkTRSP
ํด๋์ค๋ฅผ ์์๋ฐ์ผ๋ฉฐ, ๋ชจ๋ AOI(๊ด์ฌ ์์ญ) ์ฒ๋ฆฌ ํฌํจ
1. ๋๊ธฐํ ์ค์ผ์ผ(Sync Scale)
ํ์ฑํํ๋ฉด transform.localScale ๋๊ธฐํ
2. ๋๊ธฐํ ๋ถ๋ชจ(Sync Parent)
ํ์ฑํํ๋ฉด transform.parent ๋๊ธฐํ
- ๋ถ๋ชจ๊ฐ ์๋ Rigidbody๋ ์ด๋ํ์ (kinematic)์ผ๋ก ์ค์
- ๋ถ๋ชจ๊ฐ ์๋ Rigidbody๋ ์๋์ผ๋ก ๊ฐ์ฒด์ AreaOfInterest Override๋ฅผ ๋ถ๋ชจ Network Object๋ก ์ค์
๋ถ๋ชจ ๊ด๋ จ ์ฃผ์์ฌํญ
- ๋ถ๋ชจ ๋ณํ์ NetworkBehaviour ์ปดํฌ๋ํธ ๋ณด์ (NetworkBehaviourId๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ๋ฅผ ์๋ณ)
- NetworkRigidbody๋ Network Object์ ๋ฃจํธ์(์ผ๋ฐ์ )
- ๋ถ๋ชจ ๋ณํ์ Network Object์ ์์ ๋ณํ์ผ ์ ์์
3. ๋ณด๊ฐ ๋์(Interpolation Target)
Interpolation Target Render() ๋์ interpolation์ ์ํด ์ด๋ํ transform (์ผ๋ฐ์ ์ผ๋ก Collider๊ฐ ์๋ Rigidbody์ ์์ transform)
-
๊ถ์ฅ
null์ธ ๊ฒฝ์ฐ,- Network Rigidbody์ ๋ฃจํธ๊ฐ interpolation์ ์ํด ์ด๋
- ์๋ฎฌ๋ ์ด์ ๋ฃจํ์ ์์ ์ Tick ์ ํ ์์น๋ก ๋ณต๊ท
- ๋ณด๊ฐ ๋์์ ๋ฐํ์ ์ค์ ์ฝ๋๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
-
๋ณด๊ฐ ๋์(not null)์ด ํ์ํ ๊ฒฝ์ฐ
- ์ด๋ํ์ Rigidbody๋ฅผ ์ด๋์ํค๊ธฐ ์ํด
MovePosition()
์ ์ฌ์ฉํ ๋- ๋ณด๊ฐ ๋์์ ์ฌ์ฉํ์ง ์์ผ๋ฉด transform.position ๋ฐ ํ์ ์ ์ค์ ํ์ฌ ๋ณด๊ฐ ์๋
- ์ง์ ์ ์ธ ๋ณํ ๋ณ๊ฒฝ์ Rigidbody์ ๋ํ
MovePosition()
ํธ์ถ ๋ฌด์
- ๋ณด๊ฐ์ด ๋ฌผ๋ฆฌํ์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํ ๊ฒฝ์ฐ
- ์ง์ ์ ์ผ๋ก ๋ณํ์ ์ด๋์ํค๋ ๊ฒ์ ๋ฌผ๋ฆฌํ์ static friction๊ณผ sleep ํ๊ดด ๊ฐ๋ฅ
- Render Sleep Thresholds๊ฐ ์ด๋ฅผ ์ํํ์ง๋ง, ๊ฐ์ญ์ด ํ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์
- ์ด๋ํ์ Rigidbody๋ฅผ ์ด๋์ํค๊ธฐ ์ํด
์ค์ผ์ผ๊ณผ ๋ถ๋ชจ ์ค์ ์ ํจ๊ป ์ฌ์ฉํ ๋, ๋ณด๊ฐ ๋์์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. GameObject์ ์ค์ผ์ผ์ ๋ถ๋ชจ์ ์ค์ผ์ผ์ ์ํฅ์ ๋ฐ์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ํตํด ๊ฑฐ์ ๋ณต์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ํํ ์ค์ผ์ผ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ณด๊ฐ ๋์์ null๋ก ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์นด๋ฉ๋ผ๊ฐ ๋ณด๊ฐ ๋์์ ๋ฐ๋ฅด์ง ์๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ์ค์์ ๋๋ค. ์นด๋ฉ๋ผ๊ฐ ๋ณด๊ฐ ๋์์ ๋ฐ๋ผ๊ฐ์ผ ์นด๋ฉ๋ผ๋ ๋ณด๊ฐ๋ฉ๋๋ค.
4. ์ฌ๋ฆฝ ์๊ณ๊ฐ(Sleep Thresholds)
- ํ์ฑํ๋๋ฉด ๋ฃจํธ ๋ณํ์ ๋ณด๊ฐ์ด ํ์ฌ ๋ณํ ์ํ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ชจ๋ ํ์๋ ์๊ณ๊ฐ ๊ฐ๋ณด๋ค ๋ฎ์ ๊ฒฝ์ฐ ๋ฐ์ํ์ง ์์
- ๋ฃจํธ ๋ณํ์ ์ด๋์ํค๋ ํจ๊ณผ ์ํ / ์๋ฉด ๋ฐฉ์ง
- ์๋ฒ ๊ถํ ์ธ์คํด์ค์์ ์๋ฉด์ ํ์ฉํ๋ ๊ฒ์ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์ด๋ ๋ฐ ์ค์
์ฃผ์: ์ฌ๋ฆฝ ์๊ณ๊ฐ์ Interpolation Target์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค.
5. ๋ ๋ ์๊ณ๊ฐ(Render Thresholds)
- ์๋์ง ์ฌ์ฉ(Use Energy) Rigidbody์ ์๋์ ๊ฐ์๋์ ์๋์ง ์์ค์ด ์ฌ๋ฆฝ ์๊ณ๊ฐ์ ์ด๊ณผํ๋์ง ํ ์คํธํ๋ฉฐ, ๊ทธ๋ ๋ค๋ฉด ๋ณด๊ฐ ๋ฐ์
- ์์น(Position) ๋ณด๊ฐ์ด ํ์ฌ ๋ณํ ์ํ์ ๋ํด ์์น ๋ณ๊ฒฝ์ ์ผ์ผํฌ ๊ฒฝ์ฐ, ์ด ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋ณด๊ฐ ๋ฐ์ (0์ผ ๊ฒฝ์ฐ ์์น๋ ํ ์คํธ ์ ์ธ)
- ํ์ (Rotation) ๋ณด๊ฐ์ด ํ์ฌ ๋ณํ ์ํ์ ๋ํด ํ์ ๊ฐ๋ ๋ณ๊ฒฝ์ ์ผ์ผํฌ ๊ฒฝ์ฐ, ์ด ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋ณด๊ฐ ๋ฐ์ (0์ผ ๊ฒฝ์ฐ ํ์ ์ ํ ์คํธ ์ ์ธ)
- ์ค์ผ์ผ(Scale) ๋ณด๊ฐ์ด ํ์ฌ ๋ณํ ์ํ์ ๋ํด ์ง์ญ ์ค์ผ์ผ ๋ณ๊ฒฝ์ ์ผ์ผํฌ ๊ฒฝ์ฐ, ์ด ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋ณด๊ฐ ๋ฐ์ (0์ผ ๊ฒฝ์ฐ ์ค์ผ์ผ์ ํ ์คํธ ์ ์ธ)
6. Teleport()
NetworkTransform.Teleport ์ฐธ์กฐ
7. MovingTeleport()
- ์ด๋ ํ ๋ ํฌํธ ์์
FixedUpdateNetwork()
์์RunnerSimulatePhysics3D
์RunnerSimulatePhysics2D
๊ฐ ๋ฌผ๋ฆฌ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ ์ ์ ํธ์ถ- ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ํ์ ์ง์ฐ๋์ด ์์น ๋ฐ ํ์ ๊ฐ ์บก์ฒ (ํ ๋ ํฌํธ ์ ์ ๋ณด๊ฐ์ด ์ ํจํ ํ ๋ ํฌํธ ๋์์ด ์๋๋ก ๋ณด์ฅ)
Teleport()
์ ๋์์ผ๋ก, ํ๋์ Tick ๋์ Interpolation ์ ์ง
RunnerPhysicsSimulate2D / RunnerPhysicsSimulate3D
- NetworkRunner ํ๋ฆฌํน์ ์ถ๊ฐ, ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ง์ ๊ฐ๋ฅ
- ๋งค
FixedUpdateNetwork()
์์ ์ ์ฉ ๊ฐ๋ฅํPhysics Simulate()
ํธ์ถ
1. ๋ฌผ๋ฆฌ ๊ถํ(Physics Authority)
- Fusion์ด
Physics.Simulate()
/Physics2D.Simulate()
ํธ์ถ์ ์ด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ง ์๋๋ฉด Unity์ ๋ฌผ๋ฆฌ ์ค์ (์๋ ์๋ฎฌ๋ ์ด์ ๋๋ ์คํฌ๋ฆฝํธ ๋ชจ๋)์ ๋งก๊ธธ์ง ์ง์ Auto
Fusion์ดSimulate()
ํธ์ถ์ ์ธ์ํ ๋ ์ง์ - [Shared Mode ์ธ] ๋ชจ๋ ๊ฒ์ ๋ชจ๋์์ ์คํ๋ ๋
Shared Mode
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๊ฐFixedUpdateNetwork()
์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์ด๋ํ๋ค๊ณ ๊ฐ์ - ์ปจํธ๋กค๋ฌ ์ฝ๋๊ฐ
FixedUpdateNetwork()
๋ด์์ ์ ์ฉ๋๋ ๊ฒฝ์ฐ, ์ด ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๊ณPhysicsAuthority
๋ฅผ Fusion์ผ๋ก ์ค์ ํ์
- Multi-Peer ๋ชจ๋๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ
- Unity๋ ๋น-์ฃผ์ ๋ฌผ๋ฆฌ ์ฅ๋ฉด์ ์๋์ผ๋ก ์๋ฎฌ๋ ์ด์
ํ์ง ์์ผ๋ฏ๋ก Multi-Peer ๋ชจ๋๊ฐ ์ฌ์ฉ๋ ๋ Fusion์ด
Simulate()
ํธ์ถ ์ ์ด
- Unity๋ ๋น-์ฃผ์ ๋ฌผ๋ฆฌ ์ฅ๋ฉด์ ์๋์ผ๋ก ์๋ฎฌ๋ ์ด์
ํ์ง ์์ผ๋ฏ๋ก Multi-Peer ๋ชจ๋๊ฐ ์ฌ์ฉ๋ ๋ Fusion์ด
- [Shared Mode ์ธ] ๋ชจ๋ ๊ฒ์ ๋ชจ๋์์ ์คํ๋ ๋
2. ๋ฌผ๋ฆฌ ํ์ด๋ฐ(Physics Timing)
Fusion์ด ๋ฌผ๋ฆฌ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ํ์ด๋ฐ ์ธ๊ทธ๋จผํธ ์ง์
3. ํด๋ผ์ด์ธํธ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ (Client Physics Simulation)
ํด๋ผ์ด์ธํธ์์ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ ์ด
- Disabled ํด๋ผ์ด์ธํธ์์ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์ด ์คํ๋์ง ์์ผ๋ฉฐ ๋ณํ์ด PhysX ์์ง ๋๊ธฐํX
- SyncTransforms ๋ชจ๋ ํฑ์์
UnityEngine.Physics.SyncTransform()
ํธ์ถ - SimulateForward ์ฌ์๋ฎฌ๋ ์ด์
ํฑ์์
UnityEngine.Physics.SyncTransform()
์ด ํธ์ถ๋๋ฉฐ, Forward ํฑ์์UnityEngine.Physics.Simulate()
ํธ์ถ - SimulateAlways ๋ชจ๋ ํฑ์์
UnityEngine.Physics.Simulate()
ํธ์ถ
โ ๏ธ ์๋ฒ๋ ํญ์ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์คํ
[Shared Mode]
- SimulateForward์ SimulateAlways๊ฐ ๋์ผํ๊ฒ ์๋
- ๋ชจ๋ ์๋ฎฌ๋ ์ด์ ์ด Forward ํฑ์์๋ง ์งํ
4. DeltaTime ๋ฐฐ์จ(DeltaTime Multiplier)
- Physic์ Simulate()์ ์ ๋ฌ๋๋ ๊ฐ์ ๋ฐฐ์จ
- 1๋ณด๋ค ํฐ ๊ฐ์ ์ฌ์ฉํ์ฌ ์๊ฐ ๊ฐ์ํ
- 0๊ณผ 1 ์ฌ์ด์ ๊ฐ์ ์ฌ์ฉํ์ฌ ์๊ฐ ๊ฐ์ํ
5. ๊ณ ์ ์๊ฐ ๊ฐ๊ฒฉ(Set FixedTimestep)
ํ์ฑํ๋๋ฉด Unity์ Time FixedTimestep ๊ฐ์ Fusion์ DeltaTime๊ณผ ์ผ์นํ๋๋ก ์ค์
FixedUpdate
๋ด์ ์ฌ์ฉ์ ์ฝ๋๊ฐ Fusion์ ํฑ๊ณผ ๋๋ถ๋ถ ์ผ์นํ๋๋ก ์ง์
์ค์: FixedUpdate()์ FixedUpdateNetwork()๋ ์์ ํ ์ผ์นํ์ง ์์ต๋๋ค. ์ด ๋ ํ์ด๋ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ํผํฉ ์ฌ์ฉํ์ง ์๋๋ก ๋ชจ๋ ์๋๋ฅผ ํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Fusion์์๋ ๋ชจ๋ ์๋ฎฌ๋ ์ด์ ์ฝ๋๋ฅผ FixedUpdateNetwork()์ ๋ฐฐ์นํด์ผ ํ๋ฉฐ, Shared Mode์์๋ Update() ๋ด์ ๋ณ๊ฒฝ์ด ํ์ํ๊ฑฐ๋ ๋ฐ๋์งํ ์ ์์ต๋๋ค.
6. ์ฝ๋ฐฑ(Callbacks)
A. OnBeforeSimulate / OnAfterSimulate ๋ฑ๋ก๋๋ฉด, ์ด ๋ฉ์๋๋ RunnerSimulatePhysics๊ฐ ์๋ฎฌ๋ ์ด์ ์ ์ํํ ๋๋ง๋ค ํธ์ถ
using Fusion;
using Fusion.Addons.Physics;
using UnityEngine;
public class FusionPhysicsAddonExample : NetworkBehaviour
{
private RunnerSimulatePhysics3D _physicsSimulator;
public override void Spawned()
{
// RunnerSimulatorPhysics ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค (์ด ์ปดํฌ๋ํธ๋ Runner์ ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค)
_physicsSimulator = Runner.GetComponent<RunnerSimulatePhysics3D>();
// ๋ชจ๋ ์๋ฎฌ๋ ์ด์
ํฑ์ ๋ํ ์ฝ๋ฐฑ ๋ฑ๋ก
_physicsSimulator.OnBeforeSimulate += OnBeforeEverySimulate;
}
public override void Despawned(NetworkRunner runner, bool hasState)
{
// ์ฝ๋ฐฑ ๋ฑ๋ก ํด์ (์ข์ ์ต๊ด)
_physicsSimulator.OnBeforeSimulate -= OnBeforeEverySimulate;
}
void OnBeforeEverySimulate() {
// ๋ชจ๋ Physics.Simulate ํธ์ถ ์ ์ ์คํํ ์ฝ๋ ๊ตฌํ
}
}
B. QueueBeforeSimulationCallback / QueueAfterSimulationCallback ๋ค์ ์๋ฎฌ๋ ์ด์ ์ด ๋ฐ์ํ ๋ ๋จ์ผ ์ฝ๋ฐฑ์ ํ์ ์ถ๊ฐ
using Fusion;
using Fusion.Addons.Physics;
using UnityEngine;
public class FusionPhysicsAddonExample : NetworkBehaviour
{
private RunnerSimulatePhysics3D _physicsSimulator;
public override void Spawned()
{
// RunnerSimulatorPhysics ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค (์ด ์ปดํฌ๋ํธ๋ Runner์ ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค)
_physicsSimulator = Runner.GetComponent<RunnerSimulatePhysics3D>();
}
public override void FixedUpdateNetwork()
{
if (_physicsSimulator.HasSimulatedThisTick)
{
Debug.LogWarning($"์ปดํฌ๋ํธ๊ฐ FixedUpdateNetwork๋ฅผ Physics Simulation ์ดํ์ ์คํํ๊ณ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ ์คํ ์์๋ฅผ ํ์ธํ์ญ์์ค.");
PostSimulateActivity();
} else {
// ์ผํ์ฑ ์ง์ฐ ์ฝ๋ฐฑ ํ์ ์ถ๊ฐ
_physicsSimulator.QueueAfterSimulationCallback(PostSimulateActivity);
}
}
void PostSimulateActivity() {
// ํน์ Physics.Simulate ํธ์ถ ์ดํ์ ์คํํ ์ฝ๋ ๊ตฌํ
}
}
์๋ ค์ง ๋ฌธ์ (Known Issues)
- ์์ Rigidbody๋ ๋ฌผ๋ฆฌํ๊ณผ ์์ธกํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ํธ์์ฉํ ์ ์์ผ๋ฉฐ, ์๋ฎฌ๋ ์ด์
์ค์ ๋ง์น Rigidbody๊ฐ ์ด์ ์์น์ ์๋ ๊ฒ์ฒ๋ผ ์ถฉ๋ํ ์ ์์
- ์ด๋ฐ๋ ๊ฐ์ฒด๊ฐ ์ถฉ๋์ ์์กดํ์ง ์๋๋ก ํ๋ฉฐ, ์ค์ฒฉ๋ ๊ฒฝ์ฐ์๋ Collider๋ฅผ ๋นํ์ฑํ ๊ถ์ฅ
- ์ค์ผ์ผ๊ณผ ์ค์ฒฉ(๋ถ๋ชจ ์ค์ )์ ๋ชจ๋ ๋ถ๋ชจ๊ฐ ๋ณด๊ฐ ๋์ ๋ฏธ๋ณด์ ์ฒ๋ฆฌ ํ์
- ์ค์ผ์ผ๊ณผ ์ค์ฒฉ์ ๊ฒฐํฉํ๊ณ ๋ณด๊ฐ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ณด๊ฐ ๋์์ root์ ๋ถ๋ฆฌํ๊ณ parent์ Interpolation target์ผ๋ก ๋ค์ re-parentํ๋ ์ปค์คํ ์ฝ๋ ์์ฑ ํ์
- Rigidbody Collider/Transform ๊ณ์ธต์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค๊ณ ๋ชจ๋ ๊ด๋ จ ๋ณด๊ฐ ๋์ ํฌํจ
MovePosition()
๋ฐMoveRotation()
์ ๋ณด๊ฐ ๋์ ์ฌ์ฉ ํ์transform.position
๋ฐtransform.rotation
๊ฐ์ ์ง์ ์ค์ ํ์ฌ ์ด๋์ญํ์ ์ผ๋ก Rigidbody๋ฅผ ์ด๋์ํค๋ฉด ์ด ์๊ตฌ ์ฌํญ ๋ถํ์