Developer G
@developerg
Students
1,120
Reviews
77
Course Rating
4.7
Posts
Q&A
Task ๊ตฌํ 28:36 Equals ์์ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์๊ฐ์๋ถ์ ๋ง์์ด ๋ง์ต๋๋ค.public override bool Equals(object other) => Equals(other as Category);์์ ๊ฐ์ด ์ฝ๋๊ฐ ์์ ๋์ด์ผ ๋ง์ต๋๋ค.๊ณผ๊ฑฐ์ ์๋ฃ ์์ ์ ํ์๋๋ฐ ์์ธ์ง ๋ฐ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 34
Q&A
ChargingState์์ ์ง๋ฌธ์ด ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. 1) ๋น๋๊ธฐ ์ ๋ ฅ ์ฒ๋ฆฌํ๋ ์ด์ด์ ์กฐ์ค์ด๋ ํด๋ฆญ ๋๊ธฐ๋ ์ฆ๋ฐ์ ์ด์ง ์์ '๋น๋๊ธฐ์ ์ธ ์ํฉ'์ ๋๋ค. ๋ฐ๋ผ์ ๋งค ํ๋ ์ ํ๊ฒ์ ์ฐพ์๋์ง ๊ฒ์ฌํ๊ธฐ๋ณด๋ค๋, ํ๊ฒ ์์ฒ๊ฐ ์ ํ์ ๋ง์ณค์ ๋๋ง ์ฝ๋ฐฑ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ฃผ๋๋ก ํ๋ ์ด๋ฒคํธ ์ฃผ๋ ๋ฐฉ์์ด ํจ์ฌ ํจ์จ์ ์ ๋๋ค. 2) ๊น๋ํ ์ฌ์๋ ๊ตฌ์กฐOnTargetSearchCompleted ์ฝ๋ฐฑ ๋ด๋ถ๋ฅผ ๋ณด์๋ฉด, ํ๊ฒํ ์ ์ฑ๊ณตํ์ง ๋ชปํ๊ฑฐ๋ ์ต์ ์ฐจ์ง ์๊ฐ์ ์ฑ์ฐ์ง ๋ชปํด ์คํฌ ์ฌ์ฉ์ ์คํจํ์ ๊ฒฝ์ฐ ๋ค์ SelectTarget์ ํธ์ถํด ์ฌ์๋ํ๋๋ก ๋์ด ์์ต๋๋ค. ๋ง์ฝ ์ด๋ฅผ Update์์ ๊ตฌํํ๋ค๋ฉด ์ฌ๋ฌ Flag ๋ณ์์ ์กฐ๊ฑด๋ฌธ์ด ๋ค์์ฌ Update๋ฌธ์ ์ฝ๋๊ฐ ๋งค์ฐ ์ง์ ๋ถํด์ก์ ๊ฒ์ ๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ณต์กํ ์ํ ๋ถ๊ธฐ๋ฅผ ํผํ๋ฉด์ ํจ์๋ค์ ์ฑ ์ ๋ถ๋ฆฌ๋ฅผ ์งํค๊ธฐ ์ํ ์ค๊ณ๋ผ๊ณ ์ดํดํด ์ฃผ์๋ฉด ๋๊ฒ ์ต๋๋ค๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 56
Q&A
Indicator์ SelectionAction ๋ฐ SearchAction ๊ฐ์ ๊ด๊ณ์ ๋ํด ์ง๋ฌธ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.1) ์ ์ํ์ ์ค๊ณ(Indicator๊ฐ ๋ฒ์ ์ฒดํฌ๋ฅผ ๋ด๋น)๊ฐ ์ฑ ์ ๋ถ๋ฆฌ์ ์ด๊ธ๋๋๊ฐ?๋ค, ๋จ์ผ ์ฑ ์ ์์น ๊ด์ ์์๋ ์กฐ๊ธ ์ด๊ธ๋ฉ๋๋ค. Indicator์ ๋ณธ์ง์ ์ธ ์ฑ ์์ View/UI์ ๋๋ค. ํ๋ ์ด์ด์๊ฒ ๋ฒ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ด์ฃ . ์ฌ๊ธฐ์ ๋ฌผ๋ฆฌ์ ์ธ ์ถฉ๋ ์ฒดํฌ๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ ๊ฐ์ Logic๋ฅผ ๋ฃ๊ฒ ๋๋ฉด, View์ Logic์ด ์์ด๊ฒ ๋ฉ๋๋ค. ๊ฑฐ๊ธฐ๋ค ์ด๋ ๊ฒ ๋๋ฉด ๋์ค์ 'ํ๋ฉด์ ์ธ๋์ผ์ดํฐ๋ ์ ๋์ฐ์ง๋ง, ์ฌ๊ฐํ ๋ฒ์๋ก ์ ์ ์ฐพ๋ ์คํฌ' ๊ฐ์ ๊ฒ์ ๋ง๋ค ๋ ๊ณค๋ํด์ง๋๋ค. ์๊ฐ์ ํํ์ด ์๋ ๋ฐ๋ Indicator ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ ๋ชจ์์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.2) ํ์ฌ ๋ฐฉ์๋ง์ํ์ ๊ฒ์ฒ๋ผ "ํ์ฌ ์ฝ๋๊ฐ ์ํ/์๋ฟ์ ์ ํ๋์ด ์์ด์ ์๋ก์ด ํํ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ก์ง์ด ๊ผฌ์ด์ง ์์๊น?"๋ผ๊ณ ์ถฉ๋ถํ ์ฐ๋ คํ์ค ์ ์์ต๋๋ค. ํ์ง๋ง ํ์ฌ ๊ฐ์์ ๊ตฌ์กฐ๋ ์ด๋ฏธ ํํ ํ์ฅ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์ด ์์ต๋๋ค.IndicatorViewAction ํด๋์ค์ ShowIndicator(..., object range, ...) ํจ์๋ฅผ ๋ณด์๋ฉด ๋งค๊ฐ๋ณ์ ํ์ ์ด float๊ฐ ์๋๋ผ object๋ก ๋์ด ์์ฃ ? ์ ๊ฐ ์ด ๊ฐ์ object๋ก ์ ์ธํด๋ ์ด์ ๊ฐ ํน์ ํํ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์ ์ฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๊ธฐ ์ํจ์ ๋๋ค.์๋ฅผ ๋ค์ด, ์ฌ๊ฐํ(Box) ๋ฒ์ ์คํฌ์ ์๋ก ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.BoxSearchAction (๋ก์ง): ๋ด๋ถ์์ ์ฌ๊ฐํ ํฌ๊ธฐ(Vector3 extents)๋ฅผ ๊ฐ์ง๊ณ Physics.OverlapBox ๊ฐ์ ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ์์์ ์ฒ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Indicator๋ฅผ ๋์ธ ๋๋ ์์ ์ด ๊ฐ์ง Vector3 ๊ฐ์ Range Property์ ๋ฐํ๊ฐ์ผ๋ก ๋๊ฒจ์ค๋๋ค. (SelectTarget class ์ฐธ๊ณ )BoxIndicatorViewAction (๋ทฐ): ๋์ด์จ object ๋งค๊ฐ๋ณ์๋ฅผ ๋ค์ Vector3๋ก ์บ์คํ ํด์ ํ๋ฉด์ ์ฌ๊ฐํ์ ๊ทธ๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด ๋์ ๋๋ค. ๊ผญ BoxSearchAction์ด์๋๋ผ๋ Range๋ก Vector3๋ฅผ returnํ๋ SearchAction์ ์ด IndicatorView์ ํธํ์ด ๋๋๊ฒ๋๋ค. ๋ฌผ๋ก View์ ์ค์ ํ๋ Indicator ์์ฒด๋ ๋ฐ์ค ํํ๋ฅผ ๊ตฌํํ ์ ์๋ Indicator Prefab์ ์ค์ ํด์ผ๊ฒ ์ฃ .์ด๋ ๊ฒ ํ๋ฉด Action์ ๋ฌผ๋ฆฌ ์ฐ์ฐ๋ง, Indicator๋ ์๊ฐ ํจ๊ณผ๋ง ์๋ฒฝํ๊ฒ ๋ถ๋ฆฌ๋์ด ๋ด๋นํ๊ฒ ๋ฉ๋๋ค(Action - IndicatorView - Indicator ๊ตฌ์กฐ). ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฏ์ด๊ณ ์น ํ์ ์์ด, ์๋ก์ด Action๊ณผ View ํด๋์ค๋ฅผ ํ์์ํค๋ ๊ฒ๋ง์ผ๋ก ๋ฌดํํ ํ์ฅํ ์ ์๋ ๊ตฌ์กฐ์ธ ๊ฒ์ด์ฃ . ์ข ๋ ํ์ ์์ ์ฑ์ ์งํค๊ณ ์ถ๋คํ๋ฉด object๊ฐ ์๋๋ผ IndicatorData ๊ฐ์ ๊ตฌ์กฐ์ฒด๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด ๋ฃ๊ธฐ๋ ๊ฒ๋ ๊ด์ฐฎ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 81
Q&A
์ ์๋ ์ง๋ฌธ ์์ต๋๋ค!
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ฐ์์ ๋์ด๋๋ ํ์คํธ ์์คํ ๊ฐ์์์๋ ์ปค์คํ ์๋ํฐ๋ฅผ ์ง์ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ค๋ ์ธ์คํํฐ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 50
Q&A
Effect.GetData ํจ์ ์ง๋ฌธ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.GetData ํจ์๋ ์ ํฌ ๋ก์ง๋ณด๋ค๋ ์ฃผ๋ก UI๋ ํดํ์์ ํ์ฉํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์ ํธ๋ฆฌํฐ ํจ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์คํฌ ์ฐฝ์์ "๋ค์ ๋ ๋ฒจ๋ก ์ฌ๋ฆฌ๋ฉด ๋ฐ๋ฏธ์ง๊ฐ ์ผ๋ง๋ ๋์ด๋ ๊น?"๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ค์ผ ํ ๋, GetData(ํ์ฌ ๋ ๋ฒจ + 1)์ ํธ์ถํด์ ๋ค์ ๋ ๋ฒจ์ ๋ฐ์ดํฐ๋ฅผ ๋นผ์ค๊ธฐ ์ํ ์ฉ๋์ ๋๋ค. ๊ฐ์ ธ์จ ๋ค์ Level Data๋ก UI๋ฅผ ๊ตฌ์ฑํด์ ๋ณด์ฌ์ฃผ๋๊ฑฐ์ฃ .์ฐธ๊ณ ๋ก ๊ฐ์์์ GetData ๊ตฌํ์ ๋ฐ์ดํฐ๊ฐ 1๋ ๋ฒจ, 2๋ ๋ฒจ, 3๋ ๋ฒจ์ฒ๋ผ 1์ฉ ์์ฐจ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ ์ ์ ํ์ ์์ฑ๋ ์ฌํํ ๋ฐฉ์์ ๋๋ค. ๋ง์ฝ 1๋ ๋ฒจ ๋ค์ ๋ฐ์ดํฐ๊ฐ 3๋ ๋ฒจ์ธ ๊ฒ์ฒ๋ผ ๊ตฌ๊ฐ์ ๊ฑด๋๋ฐ๋ ๋ฐฉ์์ด๋ผ๋ฉด, GetData์ ๋ก์ง๋ ๋จ์ ์ธ๋ฑ์ค ์ ๊ทผ์ด ์๋๋ผ Effect.Level ํ๋กํผํฐ์์ ํ๋ ๊ฒ์ฒ๋ผ ์กฐ๊ฑด ๊ฒ์์ ํ๋๋ก ์์ ํด์ผ ํฉ๋๋ค.์ฝ๋๋ฅผ ์์ฃผ ๋ํ ์ผํ๊ฒ ๋ถ์ํ๊ณ ๊ณ์๋ค์. ๊ผผ๊ผผํ๊ฒ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉฐ ๊ณต๋ถํ์๋ ๋ชจ์ต์ด ์์ฃผ ์ข์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 53
Q&A
CanTransitionToSelf ์ง๋ฌธ ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. MakeTransition์์ canTransitionToSelf๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ์ง ๋ชปํ๊ฒ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํด๋ ์ด์ ๋, ์ฌ์ฉ์๊ฐ ์ค์ ํด๋ดค์ ์๋ฌด๋ฐ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋์ด ์๊ฐํด๋ณด๋ฉด ์ฝ์ต๋๋ค. 1. ๋ค๋ฅธ ์ํ๋ก ์ ์ดํ ๋ (์: MakeTransition)์ด๋๋ ํ์ฌ ์ํ(Idle)์ ์ ์ดํ ์ํ(Walk)๊ฐ ์๋ก ๋ค๋ฆ ๋๋ค. ์ ์ด์ '์๊ธฐ ์์ ์ผ๋ก์ ์ ์ด' ์ํฉ ์์ฒด๊ฐ ์๋๊ธฐ ๋๋ฌธ์, ์ด ์ต์ ์ true๋ฅผ ๋ฃ๋ false๋ฅผ ๋ฃ๋ ์ ์ด ๋ก์ง์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์๋ ๋ฌด์๋ฏธํ ๊ฐ์ด ๋ฉ๋๋ค. 2. ๊ฐ์ ์ํ๋ก ์ ์ดํ ๋ (์: MakeTransition)๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ์ ์์ฑํ๋ค๋ ๊ฒ์ '๊ณต๊ฒฉ ์ค์ ํน์ ์กฐ๊ฑด์ด ๋ง์ผ๋ฉด ๋ค์ ๊ณต๊ฒฉ์ ์ฒ์๋ถํฐ ์คํํ๊ฒ ๋ค(์ฝค๋ณด ๊ณต๊ฒฉ ๋ฑ)'๋ ํ๊ณ ํ ์๋์ ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ canTransitionToSelf๋ฅผ false๋ก ์ค์ ํ๊ฒ ๋๋ฉด ์ ๋๋ก ์ ์ด๊ฐ ์ ๋๊ฒ ์ฃ ? ์ด๋ฌ๋ฉด ๊ฒฐ๊ตญ '์ค์ค๋ก์๊ฒ ์ ์ดํ๋ผ๊ณ ๋ช ๋ นํด๋๊ณ ์ค์ค๋ก์ ์ ์ด๋ ๋ง์๋์' ๋ ผ๋ฆฌ์ ๋ชจ์์ด ๋ฐ์ํ์ฌ ๋์ํ์ง ์๋ ์ฝ๋๊ฐ ๋ฉ๋๋ค. ๋ค์ ๋งํด, MakeTransition์ ์ถ๋ฐ์ง์ ๋์ฐฉ์ง๊ฐ ๋ช ํํ๊ธฐ ๋๋ฌธ์ ์ต์ ์ ์ด์ด๋๋ ๊ฒ์ด ๋ถํ์ํฉ๋๋ค.MakeAnyTransition๊ณผ์ ์ฐจ์ด์ ๋ฐ๋ฉด MakeAnyTransition์ 'ํ์ฌ ์ํ๊ฐ ๋ฌด์์ด๋ ๋ฌด์กฐ๊ฑด ์ง์ ๋ ์ํ๋ก ์ด๋ํด๋ผ'๋ผ๋ ๊ด์ญ ๋ช ๋ น์ ๋๋ค. ๋ง์ฝ ์บ๋ฆญํฐ๊ฐ ์ด๋ฏธ '์ฌ๋ง' ์ํ์ ์ง์ ํด ์๋๋ฐ, ๋งค ํ๋ ์ ์ฒด๋ ฅ์ด 0 ์ดํ๋ผ๋ ์กฐ๊ฑด์ด ๋ง๋๋ค๊ณ ๊ณ์ ์ฌ๋ง ์ํ๋ก ๋ฌดํ ๋ฃจํํ๋ฉด ์ ๋๊ฒ ์ฃ ?MakeAnyTransition์ ์ด๋ฏธ ํด๋น ์ํ์ ์ง์ ํด ์์ ๋ ๋ถํ์ํ ์ฌ์ง์ ์ ํ์ฉํ ์ง ๋ง์ง ๊ฒฐ์ ํ '์ ์ฐ์ฑ'์ด ๋ฐ๋์ ํ์ํด์ ์ต์ ์ ์ด์ด๋ ๊ฒ์ ๋๋ค. canTransitionToSelf๋ ์ค์ง MakeAnyTransition์ ๋ฌดํ ๋ฃจํ๋ฅผ ๋ง๊ธฐ ์ํ ์ต์ ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 56
Q&A
Stat์ MaxValue์ ๊ดํ์ฌ ์ง๋ฌธ์ด ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๊ฐ์์์๋ MaxValue๋ฅผ ์ต๋ HP๋ก ๊ฐ์ ํ๊ฒ ๋ง์ต๋๋ค.๋ค๋ง, MaxHP, HP ์ด๋ ๊ฒ 2๊ฐ์ Stat์ ๋ง๋ค๊ณ HP์ MaxValue๋ฅผ MaxHP Stat์ผ๋ก ์ค์ ํ ์ ์๊ฒ ๋ง๋๋๊ฒ ํ์ฅ์ฑ ์ข์ต๋๋ค. (Stat์ MaxStat์ ์ค์ ํ๋ฉด MaxValue๊ฐ MaxStat์ Value ๊ฐ์ ๋ฐํํ๊ฒ Stat ํด๋์ค ํ์ฅ ํ์)๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 44
Q&A
Stat vs StatScaleFloat
์ง๋ฌธ ๋ด์ฉ์ ์ ์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ์ ํํ ์ด๋ค ๋ถ๋ถ์ ๊ณ ๋ฏผํ์๋์ง ์๊ฒ ์ต๋๋ค. ํ์ฌ ๊ฐ์์์ ๋ค๋ฃฌ Stat ํด๋์ค๋ BonusValue(๋ง์ )๋ง ์ฒ๋ฆฌํ๋๋ก ๋์ด ์์ด์, ์ง๋ฌธํ์ ๊ฒ์ฒ๋ผ "์ต์ข ์์น๋ฅผ ํผ์ผํธ๋ก ๋ปฅํ๊ธฐ"ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐ์ ์ธ ๊ตฌํ์ด ํ์ํฉ๋๋ค. ํต์ฌ์ BonusScale(๋ฐฐ์จ) ๊ฐ๋ ์ ๋์ ํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ์กด Stat ํด๋์ค์ BonusValue์ฒ๋ผ ๋ฐฐ์จ์ ๊ด๋ฆฌํ๋ ๋ณ์(BonusScale)๋ฅผ ์ถ๊ฐํ๊ณ , ์ต์ข ๊ฐ์ ๊ณ์ฐํ๋ ๊ณต์์ ์์ ํด์ผ ํฉ๋๋ค. public class Stat : IdentifiedObject { // [์ถ๊ฐ] ๋ฐฐ์จ ๋ณด๋์ค์ ์ดํฉ (์: 10% ์ฆ๊ฐ๋ฉด 0.1) private float bonusScale; // [์ถ๊ฐ] ๋ฐฐ์จ ๋ณด๋์ค๋ฅผ ์ ์ฅํ ๋์ ๋๋ฆฌ (ํค ๊ด๋ฆฌ์ฉ) private Dictionary bonusScalesByKey = new Dictionary(); // [์ค์] ์ต์ข ๊ฐ ๊ณ์ฐ ๊ณต์ ์์ // ๊ธฐ์กด: (๊ธฐ๋ณธ๊ฐ + ๋ณด๋์ค๊ฐ) // ์์ : (๊ธฐ๋ณธ๊ฐ + ๋ณด๋์ค๊ฐ) * (1 + ๋ฐฐ์จ๋ณด๋์ค) public float Value { get { float totalValue = (defaultValue + bonusValue) * (1f + bonusScale); return Mathf.Clamp(totalValue, minValue, maxValue); } } // [์ถ๊ฐ] ๋ฐฐ์จ์ ์ค์ ํ๋ ํจ์ (SetBonusValue์ ๋น์ทํ ๊ตฌ์กฐ) public void SetBonusScale(string key, float scale) { // ๊ธฐ์กด์ ๋ฑ๋ก๋ ํค๋ผ๋ฉด ๋จผ์ ๋บ๋๋ค (๊ฐฑ์ ๋ก์ง) if (bonusScalesByKey.ContainsKey(key)) bonusScale -= bonusScalesByKey[key]; bonusScalesByKey[key] = scale; bonusScale += scale; // (๊ฐ์ด ๋ณํ์ผ๋ ์ด๋ฒคํธ ํธ์ถํ๋ ๋ก์ง ๋ฑ์ ๊ธฐ์กด๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌ) } } ์ด์ SetBonusScale์ด๋ผ๋ ๋ฌด๊ธฐ๊ฐ ์๊ฒผ์ผ๋, ๋ผ๋ฐ๋์ ์ฃฝ์๋ชจ์๋ ์ด๋ ๊ฒ ๊ตฌํํ๋ฉด ๋ฉ๋๋ค. public void EquipRabadon(Entity player) { Stat apStat = player.Stats.GetStat("AbilityPower"); // 1. ์ฃผ๋ฌธ๋ ฅ +120 (๊นก์์น ์ฆ๊ฐ) -> ๊ธฐ์กด ๊ธฐ๋ฅ apStat.SetBonusValue("Rabadon_Flat", 120f); // 2. ์ฃผ๋ฌธ๋ ฅ 35% ์ฆ๊ฐ (ํผ์ผํธ ์ฆ๊ฐ) -> ์ถ๊ฐํ ๊ธฐ๋ฅ // 35% ์ฆ๊ฐ๋ 0.35๋ฅผ ๋ํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. // ๊ณต์: (๊ธฐ๋ณธ + 120) * (1 + 0.35) = 1.35๋ฐฐ ๋ปฅํ๊ธฐ apStat.SetBonusScale("Rabadon_Scale", 0.35f); } ๋ง์ฝ ์บ๋ฆญํฐ์ ๊ธฐ๋ณธ ์ฃผ๋ฌธ๋ ฅ์ด 100์ด๋ผ๊ณ ๊ฐ์ ํด ๋ด ์๋ค.SetBonusValue๋ก 120์ด ๋ํด์ง๋๋ค. -> ํฉ๊ณ 220SetBonusScale๋ก 0.35(35%)๊ฐ ์ ์ฉ๋ฉ๋๋ค. -> ๋ฐฐ์จ 1.35์ต์ข ๊ณ์ฐ: 220 * 1.35 = 297์ด๋ ๊ฒ BonusScale ๋ณ์๋ฅผ ํ๋ ์ถ๊ฐํ๊ณ Value ๊ณ์ฐ ์์ ๊ณฑํ๊ธฐ ์ฐ์ฐ์ ์ถ๊ฐํด ์ฃผ์๋ฉด, ๋กค์ด๋ ๋ค๋ฅธ RPG ๊ฒ์์ ๋์ค๋ ๋ค์ํ ํผ์ผํธ ์ฆ๊ฐ ์ต์ ์ ์์ฃผ ์ฝ๊ฒ ๊ตฌํํ์ค ์ ์์ต๋๋ค. ํด๋น ๋ด์ฉ์ ํน์ ItemSystem ๊ฐ์๋ฅผ ๊ตฌ๋งคํ์ จ๋ค๋ฉด ํด๋น ๊ฐ์์ ๋ ์์ธํ ๋์์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 4
- Viewcount
- 81
Q&A
Stat vs StatScaleFloat
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์ ํํ ์ง๋ฌธ์ด ๋ฌด์์ธ์ง ํ์ ํ์ง ๋ชปํ์ฌ ์ฌ๋ฌ ๋ต๋ณ์ ๋๋ฆฝ๋๋ค.์ง๋ฌธํ์ "Bonus Value๋ฅผ ๋ถ์ฌํ๊ณ ์ถ์ ๋"๋ StatScaleFloat์ ๊ฑด๋๋ฆฌ๋ ๊ฒ ์๋๋ผ, ์๋ณธ Stat ์์ฒด์ ๊ฐ์ ๋ํด์ฃผ์๋ฉด ๋ฉ๋๋ค. // 1. ๊ฒ์ ๋ก์ง์์ ์๋ณธ Stat์ ๋ณด๋์ค๋ฅผ ๋ถ์ฌํฉ๋๋ค. // (์: ๋ฒํ๋ฅผ ๋ฐ์์ ๊ณต๊ฒฉ๋ ฅ์ด 50 ์ฆ๊ฐํจ) attackStat.SetBonusValue("Buff_PowerUp", 50f); // 2. StatScaleFloat์ ์ฌ์ฉํ๋ ์คํฌ ๋ฐ๋ฏธ์ง ๊ณ์ฐ ๋ถ๋ถ // ์๊ฐ์๋ถ๊ป์ ๋ณ๋๋ก ์ฝ๋๋ฅผ ์์ ํ์ง ์์๋, // scaleStat์ด ์ฐธ์กฐํ๋ attackStat์ ๊ฐ์ด ์ด๋ฏธ 50 ๋์ด๋ฌ๊ธฐ ๋๋ฌธ์ // ์ต์ข ๋ฐ๋ฏธ์ง๋ ์๋์ผ๋ก ์ฆ๊ฐํด์ ๊ณ์ฐ๋ฉ๋๋ค. float finalDamage = skillDamageStatScale.Value; StatScaleFloat์ Inspector์์ ๋ฏธ๋ฆฌ ์ธํ ํด๋๋ '๊ณต์'์ด๋ผ๋ฉด, Bonus Value๋ ๊ฒ์ ๋์ค์ ์์๋ก ๋ณํ๋ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์กด์ฌํฉ๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ ๋ณดํต ์์ดํ ์ฅ์ฐฉ์ด๋ ๋ฒํ ์คํฌ์ ๊ตฌํํ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.public class EquipmentItem : MonoBehaviour { [SerializeField] private float bonusAttack = 10f; // ์์ดํ ์ ์ฅ์ฐฉํ์ ๋ ํธ์ถ public void Equip(Entity owner) { // 1. ํ๋ ์ด์ด์ ์คํฏ ์ค '๊ณต๊ฒฉ๋ ฅ'์ ์ฐพ์์ต๋๋ค. var attackStat = owner.GetStat("Attack"); // 2. ์๋ณธ ์คํฏ์ Bonus Value๋ฅผ ๋ถ์ฌํฉ๋๋ค. // "Sword"๋ผ๋ ํค๊ฐ์ ์ค์ ๋์ค์ ์ด ๊ฐ๋ง ๋บ ์ ์๊ฒ ํฉ๋๋ค. if (attackStat != null) attackStat.SetBonusValue("Sword", bonusAttack); } // ์์ดํ ์ ํด์ ํ์ ๋ ํธ์ถ public void Unequip(Entity owner) { var attackStat = owner.GetStat("Attack"); // 3. ๋ถ์ฌํ๋ ๋ณด๋์ค ์์น๋ฅผ ์ ๊ฑฐํฉ๋๋ค. if (attackStat != null) attackStat.RemoveBonusValue("Sword"); } } Scale์ฒ๋ผ Inspector์์ BonusValue๋ฅผ ์ฃผ๊ณ ์ถ์ผ์ ๊ฑฐ๋ผ๋ฉด StatScaleFloat์ ํ์ฅํด์ [Calculation Mode] ๊ฐ์ ์ต์ ์ ์ถ๊ฐํด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. public enum CalculationMode { Fixed, // ๊ณ ์ ๊ฐ (Bonus Value ๊ฐ๋ ) Scaled // ์คํฏ ๋น๋ก (๊ธฐ๋ณธ๊ฐ + ์คํฏ ๋ณด์ ) } [Serializable] public struct AdaptiveFloat { public CalculationMode mode; // 1. ๊ธฐ๋ณธ๊ฐ (๊ณ ์ ๋ฐ๋ฏธ์ง or ๊ธฐ๋ณธ ์์น) // Fixed ๋ชจ๋์ผ ๋๋ ์ด ๊ฐ ์์ฒด๊ฐ ์ต์ข ๊ฐ์ด ๋จ public float defaultValue; // 2. ๋น๋กํ ์คํฏ (Scaled ๋ชจ๋์ฉ) public Stat scaleStat; // 3. ๋น๋ก ๊ณ์ (Scaled ๋ชจ๋์ฉ) // ์: 0.5f๋ฉด ์คํฏ์ 50%๋งํผ ์ถ๊ฐ, 1.0f๋ฉด 100% ์ถ๊ฐ public float scaleRatio; public float Value { get { float statValue = scaleStat != null ? scaleStat.Value : 0f; // [Fixed ๋ชจ๋] : ๊ณ์ ์์ด ์ ์งํ๊ฒ ํฉ์ฐ // ๊ณต์: ๊ธฐ๋ณธ๋ฐ๋ฏธ์ง + ํ if (mode == CalculationMode.Fixed) return defaultValue + statValue; // [Scaled ๋ชจ๋] : ๊ณ์(Ratio)๋ฅผ ๊ณฑํด์ ํฉ์ฐ // ๊ณต์: ๊ธฐ๋ณธ๋ฐ๋ฏธ์ง + (ํ * 0.5) return defaultValue + (statValue * scaleRatio); } } } ํน์๋ ์ง๋ฌธํ์ ๊ฒ ๋ค๋ฅธ ๊ฒ์ด์๋ค๋ฉด ๋ค์ ์ง๋ฌธํด์ฃผ์๋ฉด ๋๋ต ๋๋ฆฌ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 4
- Viewcount
- 81
Q&A
์ ๋๋งค์ด์ ๋ฒ๊ทธ๊ฐ ์๋๊ฒ ๊ฐ์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.ํด๋น ๋ฌธ์ ๋ ์ ๋ํฐ NavAgent๋ฅผ ์ฐ๋ค๋ณด๋ ์๊ธฐ๋ ๋ฌธ์ ๋ก ๋ง์ฐ์ค ํด๋ฆญ์ ๋ง ํ๊ฑฐ๋ Player Entity๊ฐ Enemy Entity์ ๋ถ๋ช์น๊ณ ํ๋ค๋ณด๋ฉด ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค. ๊ฐ์์์ ์บ๋ฆญํฐ ์ปจํธ๋กค๋ฌ๋ ์ค์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ํํ๋ก ๋ง๋ค์ด์ ๊ทธ๋ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 66




