게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
유니티 상태패턴..
게시물ID : programmer_22978짧은주소 복사하기
작성자 : 베오베감이다(가입:2011-12-20 방문:547)
추천 : 0
조회수 : 941회
댓글수 : 1개
등록시간 : 2019/08/26 02:53:52
유니티로 상태패턴을 구현할 때 가장 정석적인 방법이 무엇인가요? 
현재는 FSM + enum + 코루틴으로 구현하고 있습니다.
 
// 플레이어의 동작 enum문
public enum Behaviour
{
Idle,
Move,
Attack,
DoubleAttack,
UltimateAttack
}
 
public Behaviour behaviour { get; set; }
 
 
// PlayerCtrl의 Start함수에서 사용할 FSM 코루틴
public IEnumerator FSM()
{
while (true)
yield return StartCoroutine(behaviour.ToString());
 
}
 
 
// 조건에 따른 상태 전이를 위한 함수
bool IsAttack()
{
if (Input.GetMouseButtonDown(0)) return true;
return false;
}
 
// 문제의 상태에 따른 행동 코루틴 
IEnumerator Attack()
yield return new WaitForSeconds(0.933f);
 
if (IsAttack()) behaviour = Behaviour.DoubleAttack;
if (IsIdle()) behaviour = Behaviour.Idle;
if (IsMove()) behaviour = Behaviour.Move;
}
 
 
어택 상태 중에 클릭 한번 더하면 더블어택이 되게 구현하고 싶은데
업데이트에서 함수로 돌릴 땐 돌아가던 것이
코루틴으로 바꾸고 나니까 돌아가지 않습니다.
 
질문 1. FSM + 상태패턴 이렇게 구현하는것이 맞는지 잘 모르겠습니다.
질문 2. 더블어택은 왜 돌아가지 않을까요? ㅠ
전체 추천리스트 보기
댓글쓰기
리스트 페이지로
데이터절약모드
◀뒤로가기
PC버전
맨위로▲
공지 운영 게시판요청 자료창고