스터디/Unity 2018. 11. 12. 00:40

[Unity] 작업노트 - Playmaker 연습하기 7, get/set property 2- 환쟁이님 강좌

환쟁이(slee16) 강좌 따라 연습하기 계속
플레이메이커 액션 - Get/Set Property 두번째 파트

Rigid body의 gravity 옵션 켜기
Mesh Renderer에서 Cash Shadow 켜고 끄기

terrain에 큐브를 하나 만들어주고
게임오브젝트 manager_box 를 만들어 FSM 추가
Ready 스테이트에 <Get Key Up> 액션, ready_push 이벤트 추가

Result 스테이트에 cube 오브젝트를 프로젝트뷰에서 드래그앤드랍

플레이하면 큐브는 공중에 떠있고, 엔터를 누르면 Gravity가 적용되어 아래로 떨어진다 



위 예제의 큐브를 내가 만든 캐릭터 프리팹으로 교체해보고 싶었는데 생각보다 문제가 복잡해졌다

단순 큐브의 meshRender 오브젝트의 get/set property는 간단한데, 캐릭터는 상위폴더아래에 몇개의 메쉬/메쉬렌더러가 별도로 있기 때문
그래서 아래 링크를 참고해서 몇단계를 더 거쳤다

우선 변수형은 Object(게임오브젝트와의 차이를 이제서야 알았다)를 만들고 타입에서 갖가지 서브 요소타입을 정할 수 있다

 Player 1 게임오브젝트의 child인 yellowbody를 새 게임오브젝트 변수 get child에 저장하고, 
(플레이어를 구성하는 여러 파트가 있지만 그냥 몸통 부분만 일단 받아오고 나머지는 그림자 cast shadow를 아예 첨부터 꺼버렸다)
그 yellow body 게임오브젝트중 메시렌더러 부분을 아까 만든 object 변수에 저장한다


그리고 get/set property는 아까 드래그드랍을 바로 했던것과는 달리 리스트에서 변수를 불러온다

플레이!

엔터를 누르면 gravity가 활성화 되어 아래로 떨어졌다가 다시 초기 위치로 돌아가게 되고,
스페이스를 누르면 그림자가 생겼다가 없어졌다 하게 된다!


스터디/Unity 2018. 11. 11. 02:51

[Unity] 작업노트 - Playmaker 연습하기 6, get/set property - 환쟁이님 강좌

환쟁이(slee16) 강좌 따라 연습하기 계속
플레이메이커 액션 - Get/Set Property 첫번째 파트


Get / Set Property 를 유니티 UI와 연결하는 연습

Create Empty Object - UI에서 Image 선택 - 소스에서 Knob 선택 - Imagey Type Filled 를 선택 - Fill amount에 따라 원의 채워지는 퍼센트가 달라진다

-Property_Guage라는 게임오브젝트 만들고 
-circle_increase 스테이트에 아까 만든 UI 이미지를 드래그앤 드랍하면 이런 메뉴가 뜬다.
-Image에서 Set Property 선택



FillAmount 변수(0~1)에 따라 원의 채워짐이 달라지는데 이때 <animate float> <set float value>를 이용해 f_animfloat이 f_circleamunt까지 변화할때 curve곡선에 따라 변화도록 해준다



결과!


스페이스바를 누르면 값이 조금씩 증가하도록 변경
Stanby 스테이트에 <Get Key up> 추가하고 ready_to_push 이벤트

Circle_increse 스테이트에 <float add> 추가

숫자가 1이상이 되는지를 판단하는 스테이트를 추가하고 conf_no conf_yes 이벤트 추가하여 분기
1이상이 되면 reset 스테이트에 <set float value> 를 0으로 하고, 다시 standby 스테이트로 보낸다



플레이! 스페이스바 누를때마다 원이 커지고 1이상이 되면 reset 됨



스터디/Unity 2018. 11. 3. 21:38

[Unity] 작업노트 - Playmaker 연습하기 2 - Game Artz님 강좌


한글 유튜브 강의를 살짝 들어봄

https://www.youtube.com/watch?v=gA1Yxkq_uQc (Game Artz님) unity playmaker 02

https://www.youtube.com/watch?v=T36lEjrS2cQ unity playmaker 03


- 플레이메이커 설치후 중요 셋팅

- 버튼 눌러서 캐릭터 조작하기


유니티 메뉴 Playmaker > Addons>> download addons

Ecosystem browser 추가 설치해야 기타 플러그인을 사용할 있음


UI> Canvas 생성

안에 UI > button 생성

버튼에 Add FSM



버튼을 눌렀을때 오른쪽으로 이동하도록 만들어보겠음

Ecosystem browser 에서 U gui proxy full 다운로드


그러면 이제 state 에서 transition


반드시 add script 해야함

Play maker u component proxy (script) 추가!



키보드로 캐릭터가 4방향으로 로 움직이도록 했고, 버튼 누르면 구 쪽으로 달려감

Smoothy Look At, Move Towards 액션 사용




카메라가 캐릭터 쫓아가도록 main camera 오브젝트를 player캐릭터 넣음

근데 그러면 귀여운 앞모습이 보이질 않잖아..흑




카메라에 FSM 추가해서 Smoothy Follow Action 추가하면 카메라가 오브젝트를 자연스럽게 쫓아가고 회전함





https://www.youtube.com/watch?v=XRUUGhWB1Wg unity playmaker 04

큐브 위에 마우스 클릭하면 큐브가 사라지면서 다음 큐브가 나타나는 예제







다음 단계로 버튼을 누르면 캐릭터가 다음에 나타나는 큐브를 바라보도록 응용 해보았다

그리고 Cube를 누르면 Cube쪽으로 쫓아가고, sphere를 누르면 그쪽으로 쫓아감

근데 Sphere를 누르면 state가 finish 되면서 cube를 바라보는 state로 자동 넘어가서 획 돌아가버리는 느낌.

이건 어떻게 해결해야할까? finish가 되면서 cube를 바라보지 않는 state를 캐릭터에 하나 더 추가해야하나?

암튼 현재는 일일히 event 1 2 3 4 만들어서 큐브1 클릭하면 큐브 2 액티베이트 되면서 이벤트 1 보내고 rotateCube라는 글로벌 게임오브젝트에 Cube2를 넣는다. 

다음 cube2 클릭하면 cube3 액티베이트, 이벤트 2 보내고 rotateCube Cube 3 넣고.. 이렇게 동일하게 반복하게 된다. 

 이때 event 1 2 3 4 따로 보내지 않고 nextcube라는 이벤트를 만들어서 공용화하고, 다음에 액티베이트 되는 큐브를 글로벌게임오브젝트에 넣도록 공용화(함수화?)하고 싶은데 어떻게 하는지 잘 모르겠다. playmaker의 액션 종류에 대해서 좀더 공부해야할듯


getter/setter 구분해서 쓰는거랑 gameobject랑 FSMgameobject랑 변수로만 만든 gameobject랑 너무 헷갈림 0ㅁ0...


그래도 로직을 만들면서 헤매기는 하는데 연두색 선으로 state의 이동에 대한 디버그를 하면서 할수있어서 좀 다행이다


텍스트 코딩으로 했으면 내 실력으로는 어림도 없는 구성이었을듯!


playmaker 만세!