<div style="color:#e0deda;font-family:dotum, sans-serif;"> <div>유니티로 상태패턴을 구현할 때 가장 정석적인 방법이 무엇인가요? </div> <div>현재는 FSM + enum + 코루틴으로 구현하고 있습니다.</div> <div> </div> <div>// 플레이어의 동작 enum문</div> <div>public enum Behaviour</div> <div>{</div> <div style="margin-left:40px;">Idle,</div> <div style="margin-left:40px;">Move,</div> <div style="margin-left:40px;">Attack,</div> <div style="margin-left:40px;">DoubleAttack,</div> <div style="margin-left:40px;">UltimateAttack</div> <div>} <div> </div> <div>public Behaviour behaviour { get; set; }</div> <div> </div> <div> </div> <div>// PlayerCtrl의 Start함수에서 사용할 FSM 코루틴</div> <div> <div>public IEnumerator FSM()</div> <div>{</div> <div style="margin-left:40px;">while (true)</div> <div style="margin-left:80px;">yield return StartCoroutine(behaviour.ToString());</div> <div> </div> <div>}</div></div></div></div> <div style="color:#e0deda;font-family:dotum, sans-serif;"> </div> <div style="color:#e0deda;font-family:dotum, sans-serif;"> <div> </div> <div>// 조건에 따른 상태 전이를 위한 함수</div> <div> <div>bool IsAttack()</div> <div>{</div> <div style="margin-left:40px;">if (Input.GetMouseButtonDown(0)) return true;</div> <div style="margin-left:40px;">return false;</div> <div>}</div></div> <div> </div> <div>// 문제의 상태에 따른 행동 코루틴 </div> <div> <div>IEnumerator Attack()</div> <div>{ </div> <div style="margin-left:40px;">yield return new WaitForSeconds(0.933f);</div> <div style="margin-left:40px;"> </div> <div style="margin-left:40px;">if (IsAttack()) behaviour = Behaviour.DoubleAttack;</div> <div style="margin-left:40px;">if (IsIdle()) behaviour = Behaviour.Idle;</div> <div style="margin-left:40px;">if (IsMove()) behaviour = Behaviour.Move;</div> <div>}</div> <div> </div> <div> </div> <div>어택 상태 중에 클릭 한번 더하면 더블어택이 되게 구현하고 싶은데</div> <div>업데이트에서 함수로 돌릴 땐 돌아가던 것이</div> <div>코루틴으로 바꾸고 나니까 돌아가지 않습니다.</div> <div> </div> <div>질문 1. FSM + 상태패턴 이렇게 구현하는것이 맞는지 잘 모르겠습니다.</div> <div>질문 2. 더블어택은 왜 돌아가지 않을까요? ㅠ</div></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.