작성하려는 로직
임의 오브젝트에 대해서, 아래 과정을 반복한다.
끝
나중에 한번에 찾아보기 좋게 정리해 놓은 것. 지금 봐둘 필요는 없는 부분.
= Bool Test : Bool 타입의 변수에 대해서 IF 문을 수행 = Get Child Count : 자식 오브젝트의 숫자 구하기 (Recursive인지는 모르겠네) = Find Child : 이름으로 자식 오브젝트 찾기 & 변수에 저장<sup>변수는 따로 준비하는 것</sup> = Wait : 대기시키는 액션 = Set Int Value : 정수 입력 = Int Add : Int 타입 변수<sup>변수는 따로 준비하는 것</sup>에 숫자를 더한다. 정수대 정수 연산은 다른 액션을 사용한다. = Int Compare : 정수 2개 (값 또는 변수) 비교하고, 결과 값에 따라 <sup>같다, 작다, 크다</sup> 이벤트 발생 = Convert Int To String : 숫자(int)를 문자열로 변경 = Build String : 문자열을 조립한다. = Move Towards : 특정 위치로 이동. 중간에 멈출 수 잇는지 아닌지 모름
게임 오브젝트 MovingObject에 새로운 FSM 추가.
(PlayMaker 태그가 붙어 있는 스샷 추가)
Name | Type | Desc |
---|---|---|
PathObjectCount | Int | Path 위치 역할을 하는 오브젝트의 최대 개수 |
PathObjectIndex | Int | 여러 패스 중에 몇번째 패스 오브젝트 위치를 참조할 것인가? |
Variables 탭을 눌러서 앞으로 사용할 변수를 추가
= PathObjectIndex : **MovingObject \ Position**의 Child 오브젝트 개수를 구한다. = : 이동할 위치 정보를 갖고 있는 GameObject의 개수를 구한다. = PathObjectCount : 이동 위치 정보 GameObject의 인덱스를 저장할 변수를 추가하고 초기화
Init 상태State에 액션 추가
< 100% 40% - > | |
![]() | PathObjectIndex Set Int Value 액션 |
![]() | PathObjectCount Get Child Count 액션 |
Get Child Count 액션에서 GameObject에 Position 오브젝트를 할당. |
If문 역할 하는 State를 추가하는 것을 봅니다.
Name | Type | Desc |
---|---|---|
useEnteringMotion | Bool | 최초 '특정 위치'로 이동한 다음 Fixed경로이동을 시작할 것인지? |
FINISHED는 내장 이벤트. 현재 State가 종료되때를 가리킨다.
Bool Test 액션 결과 값에 따라, 이동할 State를 준비한다. |
---|
테스트
목표 1,2 중에 어떤 것을 선택할 것인지 확인할 bool 변수 추가.
true, false 일때 보낼 이벤트를 추가.
First Positioning, Goto NextReact
: 이벤트가 설정 되었을때, 액션의 결과 조건으로 이벤트가 선택 되는 경우 이동할 새로운 State를 추가한다.
FSM에서 Init State를 선택하고 State 탭에 액션 추가
이 이벤트면 상태변경이 발생된다, 라는 뜻.
useEnteringMotion 변수 값에 의해,
Variables 탭에서 "useEnteringMotion" 변수 값을 변경해서 맞는 State로 이동하는지 확인.
1. 'Next React'새로 추가 에서,
2. 'Setup Next Position'새로 추가 에서
목적 | 실제로 할 것 |
---|---|
Position의 child 오브젝트를 찾기 위한 스트링을 조합 | PathObjectIndex 변수를 사용해서 찾아낼 오브젝트 이름 만들기 |
오브젝트를 찾은 다음, 저장해 놓기 | savedNextMovingPosition 변수 추가해서 여기에 저장 |
PathObjectIndex 변수 값 증가 | PathObjectCount보다 크면 다시 1로 설정 |
3. 'MoveTo'새로 추가 State
4. 'Wait'새로 추가 State
지금은 하는 일이 없기 때문에, Setup Next Position으로 바로 이동.
결과 : PathObjectIndex 숫자 값이, nextPathObjName 스트링으로 변경.
뭐... 코드를 안쓰려고 하다보니 이런 짓도 해야 함.
목표
간단한 부분이므로 퀵 정리
대충 메모 하고, 은근 슬쩍
실행 후 에러가 없다면 성공. 위치 오브젝트에 대한 변경이 없어서, 제자리에 가만 있는 것 같지만..
2초 대기 후, FINISHED 이벤트에서 Next React State로 이동(한다)
지금 실행 해보면 동작 하지만에러나면 에러.. 한자리에 가만 있는다. 위치 오브젝트를 변경한 적이 없기 때문에 당연한 현상.
Setup Next Position에서
별로 복잡하지 않아서 퀵 설명.
요 경우가 왜 State를, 언제 분리하는게 좋은가 알려줌
Event를 잘 활용하면 되긴 되지만, 복잡해질 것 같은데.
숫자를 리셋하는 타이밍을 찾는 조건 또한 다른 방법을 취할 수 있다. Find Child 결과가 null인지 확인한다든지. null이면 숫자를 리셋하는거지.
이 두 State 모두,
실행 실행 실행
지금까지 된 부분으로, 오브젝트가 Position의 Child 오브젝트들을 따라 움직여야 한다!
귀찮은데 종료할까.. 생각보다 굉장히 긴데.
여긴 나중에 정리