Godot์ ๋ถ๋์์์ ๋น๊ต ์ **ํ์ฉ ์ค์ฐจ(tolerance)๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌ**ํ๋ ๋ด์ฅ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ก ์ธํด Unity๋ณด๋ค ๋ถ๋์์์ ์ด์์ ๋ ๋ฏผ๊ฐํ๊ฒ ์์
ํ ์ ์์ง๋ง, ์์ ํ ๋ฌด์ํด๋ ๋๋ ๊ฒ์ ์๋๋๋ค. ๊ตฌ์ฒด์ ์ธ ์ฐจ์ด์ ๊ณผ Godot์ ์ ๊ทผ ๋ฐฉ์์ ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.
---
### **Godot์ ๋ถ๋์์์ ์ฒ๋ฆฌ ๋ฐฉ์**
1. **`is_zero_approx()` ๋ด์ฅ ํจ์**
ย ย - 0๊ณผ์ ๋น๊ต ์ `0.00001` ๋ฏธ๋ง์ ๊ฐ์ ์๋์ผ๋ก 0์ผ๋ก ๊ฐ์ฃผ
ย ย - ์์: `if velocity.length() < 0.00001:` ๋์ `if velocity.is_zero_approx():` ์ฌ์ฉ
2. **๋ฌผ๋ฆฌ ์์ง ๋ด๋ถ ์ฒ๋ฆฌ**
ย ย ```gd
ย ย # move_and_slide()๋ ๋ด๋ถ์ ์ผ๋ก ๋ฏธ์ธ ์๋ ๋ฌด์
ย ย velocity = move_and_slide(velocity)
ย ย if velocity.is_zero_approx():
ย ย ย ย ย ย play_idle_animation()
ย ย ```
3. **์ ๋ํฐ vs Godot ๋น๊ต ํ**
ย ย | ํน์ง | Unity | Godot |
ย ย | ๊ธฐ๋ณธ ๋น๊ต ๋ฐฉ์ | ์ ํํ ๋น๊ต (==) | ๊ทผ์ฌ์น ๋น๊ต ํจ์ ์ ๊ณต |
ย ย | ๊ถ์ฅ ๋ฐฉ๋ฒ | ๊ฐ๋ฐ์ ๊ตฌํ ํ์ | ๋ด์ฅ ํจ์ ํ์ฉ |
ย ย | ๋ฌผ๋ฆฌ ์์ง ์ง์ | ์๋ ์ฒ๋ฆฌ | ์๋ ๋ณด์ ํฌํจ |
---
### โ + **์ฃผ์์ฌํญ**
- **์ง์ ๋น๊ต ์ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ**
ย ```gd
ย # ๋์ ์์ (์ ํํ ๋น๊ต)
ย if velocity.x == 0:ย # 0.0000001 ๊ฐ์ ๊ฐ์์ ์คํจ
ย # ์ข์ ์์ (๊ทผ์ฌ์น ๋น๊ต)
ย if is_equal_approx(velocity.x, 0, 0.0001):
ย ```
- **ํ์ฉ ์ค์ฐจ ์กฐ์ ๊ฐ๋ฅ**
ย ```gd
ย # 3D ๋ฒกํฐ ๋น๊ต ์ ์ปค์คํ
ํ์ฉ ์ค์ฐจ ์ค์
ย a.is_equal_approx(b, 0.001)
ย ```
---
### **Godot ๊ฐ๋ฐ์ Best Practice**
1. **๋ด์ฅ ๋น๊ต ํจ์ ํ์ ์ฌ์ฉ**
ย ย - `is_zero_approx()`, `is_equal_approx()`, `sign()` ํจ์ ํ์ฉ
2. **๋ฌผ๋ฆฌ ์ฐ์ฐ ์ move_and ๊ณ์ด ๋ฉ์๋ ์ฌ์ฉ**
ย ย - `move_and_slide()`, `move_and_collide()`์ ๋ด์ฅ ์ค์ฐจ ๋ณด์
3. **์๋ํฐ ์ค์ ํ์ธ**
ย ย - ํ๋ก์ ํธ ์ค์ ์์ ๋ฌผ๋ฆฌ ์์ง์ ๊ธฐ๋ณธ ํ์ฉ ์ค์ฐจ ๊ฐ ํ์ธ ๊ฐ๋ฅ
Godot์ ๊ฐ๋ฐ์๊ฐ ๋ถ๋์์์ ๋ฌธ์ ๋ฅผ **์์์ ์ผ๋ก ๋ ์๊ฐํ๋๋ก** ์ค๊ณ๋์์ง๋ง, ์ฌ์ ํ ๋ถ๋์์์ ์ฐ์ฐ์ ๋ณธ์ง์ ํ๊ณ๋ ์กด์ฌํฉ๋๋ค. ์ ๋ฐ๋๊ฐ ์ค์ํ ๊ณ์ฐ(์: ๊ธ์ต ์๋ฎฌ๋ ์ด์
)์์๋ `decimal` ํ์
์ฌ์ฉ์ ๊ณ ๋ คํด์ผ ํ์ง๋ง, ๊ฒ์ ๊ฐ๋ฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ Godot์ ๊ธฐ๋ณธ ์์คํ
์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
- dc official App
์ด์ ๋๋ฉด godot์ ์ธ ์ด์ ๋ฅผ์๊ฒ์ช? - dc App
์ด๊ฑฐ๋ ์ ๋๋ ์๋ Mathf.Approximately()๋ผ๋ ํจ์๋ก ์์ด..
์ค๋๋ง godot์๋ง ์๋๊ฑธ๋ก ํด์ฃผ์์ - dc App
๊ตฌ๋ผ๊ฐ ์์ด๋ ๊ณ ๋๋จ์ ๋ถํฅํ ๊ฒ์ด๋ค
๊ทธ์ ๋น
๊ณ ๋ ์์ฆ์ ๋ฌด๊ฑฐ์์ ธ๋ ์ ๋์๊ฐ? ํ์ด์ฌ์ด๋ ์ฝ๋๊ฐ ๋น์ทํ๋ค๊ธธ๋ ๋์ค์ ๊ฒ์ ํ๋๋ ๊ณ ๋๋ก ๋ง๋ค์ด๋ณผ๊น ํ๋๋ฐ