스터디/Unity 2018. 11. 4. 01:11

[Unity] 작업노트 - Playmaker 연습하기 4, 플레이어의 이동 - 환쟁이님 강좌

환쟁이(slee16) 강좌 따라 연습하기 계속
플레이메이커 예제 #1 - 플레이어의 이동 1

-바닥을 클릭한 지점으로 이동하는 예제
-오브젝트에 FSM을 직접 심기보다는 Manager를 따로 두어 제어하는 방식
-Terrain 레이어를 지정하여 Layer Mask 활용


<준비>


Terrain 에 Tag, Layer 추가

Player에 Character Controller 추가

큐브 하나 만들어서 Target으로 이름 짓기

Manager_Move라는 빈 게임오브젝트

2.Manager_Move

StandBy 스테이트에 Mouse Pick Event 추가
GameObject에는 Terrain
Event 에 Clicked 생성하여
Mouse Down에 넣어줌
Clicked 트랜지션을 스테이트에 추가

Get Position 스테이트에 Mouse Pick 액션 추가
PickPosition 벡터3변수 만들기
Layer Mask 1로 지정해서 Element0을 Terrain으로
-Terrain을 클릭하면 - > 클릭한 지점 벡터값을 변수 pickposition에 저장 -> layermask를 통해 terrain 외의 오브젝트 클릭 이벤트는 무시 


Set Target 스테이트 추가
Set Position 액션에 Target의 포지션을 PickPositon 변수값을 받아와 그 위치로 옮김
Wait 액션을 추가하여 무한루프 방지 (on/off 다 해봤는데 어떤 차이가 있는지 잘 모르겠음)


3.Player
플레이어가 타겟을 따라가도록

Ignore Vertical On으로 함 : 수직 이동 무시. 켜놓지 않으면 플레이어가 땅속으로 묻히게 됨

4.Manager_Move에서 이벤트 보내기

Set Target 스테이트에 Send Event
Event Target을 Broadcast Call : 이벤트 받을수있는 모든 오브젝트에게 전달
Send Event : MoveTarget 이벤트로, 글로벌


*state 라벨 켜고 끄기 : FSM - Debug - Show State Labels