๋ฐ์ ์ง๋ฌธ๊ธ์ ๋ํ ๋ต.
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=112646&page=1
์ง๋ฌธ์์ ์ง๋ฌธ
-> ์บ๋ฆญํฐ๊ฐ ํผ๊ฒฉ ๋นํ์ ๋ ์ ํด์ง ์ฒ๋ฆฌ๋ฅผ ์์ฐจ์ ์ผ๋ก ์งํ์ํค๊ณ ์ถ๋ค. ์ด๋ป๊ฒ ํด์ผ ํ๋?
์ด๋ฐ ์ํฉ์์ ๋ ๋๋ถ๋ถ ๋ด๊ฐ ์๊ณ ์๋ ์ผ๋งค ์คํ ์ดํธ ํจํด์ ์.
๊ทผ๋ฐ ๋ฏธ์, ํด๋ณด๊ณ ๋๋๊น ์ง๋ฌธ์ ๋ต์ด ์๋๊ฑฐ ๊ฐ์ ใ ใ ;;
์ผ๋จ ์ด๊ฒ ์๊น์์ ๊ธ์ ์ ใ ใ
public class Test : MonoBehaviour
{
private enum EHitStates { Idle, Start, PlayEffects, Blink, Damage, Stop }
private EHitStates _currState;
public void Hit()
{
StartHitProcess();
}
private void StartHitProcess()
{
_currState = EHitStates.Start;
}
private void Update()
{
switch (_currState)
{
case EHitStates.Idle:
break;
case EHitStates.Start:
CaseStart();
break;
case EHitStates.PlayEffects:
CasePlayEffects();
break;
case EHitStates.Blink:
CaseBlink();
break;
case EHitStates.Damage:
CaseDamage();
break;
case EHitStates.Stop:
CaseStop();
break;
}
}
private void CaseStart()
{
// ์ค์ ์ด๊ธฐํ.
// ์ด๊ธฐํ ํ์ ์ดํํธ ์คํ์ํค๊ณ ๋ค์ ์คํ
์ดํธ๋ก ๋์ด๊ฐ.
PlayEffect();
_currState = EHitStates.PlayEffects;
}
private void CasePlayEffects()
{
// ์ดํํธ๊ฐ ์ข
๋ฃ๋๋๊ฑธ ๊ธฐ๋ค๋ฆฌ๋ ์คํ
์ดํธ
// ์ดํํธ ์ข
๋ฃ ์๊ทธ๋์ ์ฝ๋ฐฑ์ผ๋ก ํด๋ ๋๊ณ , ๋ถ๋ฆฌ์๋ ๋๊ณ , ํ์ด๋จธ๋ ๋๊ณ ํธํ๊ฑฐ ์ ํ
// ์ดํํธ ์ข
๋ฃํ๋ฉด ๋ธ๋งํฌ ์๋์ํค๊ณ ๋ค์ ์คํ
์ดํธ๋ก ์ด๋.
if (isEffectDone)
{
BlinkStart();
_currState = EHitStates.Blink;
}
}
private void CaseBlink()
{
// ๋ธ๋งํฌ๊ฐ ์ข
๋ฃํ๋๊ฑธ ๊ธฐ๋ค๋ฆฌ๋ ์คํ
์ดํธ. ์ดํํธ ์คํ
์ดํธ์ ๋์ผ.
// ์ข
๋ฃ์ ๋ค์ ์คํ
์ดํธ๋ก
if (isBlinkDone)
{
ApplyDamage();
_currState = EHitStates.Damage;
}
}
private void CaseDamage()
{
// ์ด๊ฑด ์์ด๋ ๋ ๋ฏ?
}
private void CaseStop()
{
// ์ด๊ธฐํ
_currState = EHitStates.Idle;
}
}
์๋ ๊ธ ์จ์ค์ ์ ๋ง ๊ณ ๋ง์!! ๊ทธ๋ ๋ค ๊ฒฐ๊ตญ ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ์ข ๋ฃ์์ ์ ๊ณ์ฐํด์ฃผ๋๊ฑด์๋์ง๋ง... ๊ทธ๋๋ ๋ต๋ณ ์ ๋ง ๊ณ ๋ง์!!