VRChat 마이너 갤러리 저장소

제 목
강좌/정보 월드 제작 강좌)Udon 강좌 - 1 온오프 물체 만들기
글쓴이
조개껍데기
추천
11
댓글
6
원본 글 주소
https://gall.dcinside.com/vr/337377
  • 2019-12-23 18:00:09
							

현재 이 강좌는 알파 버전의 Udon을 기준으로 작성하였기에 출시 후 변경될 수 있음!


Udon이 최근에 알파 테스트가 풀렸다. 여기서 Udon이란, 기존의 VRC_Trigger을 대체하는 월드 트리거 시스템이다.

막 버튼을 누르면 뭔가 일어나고 특정 구간에 가면 뭔가 일어나는 그런거를 이젠 우동으로 만들 수 있다.


다만 기존의 VRC_Trigger와는 달리 우동은 프로그래밍적 지식이 조금 필요하다.. 

이 부분은 어려울 수 있으니 암기보단 최대한 이해하는 식으로 하자.


초보기준으로 설명하긴 했으나 어려울 수도 있다.


빨간 버튼이 있고, 앞에 거울이 있다.(SDK오류인지 거울이 에러남) 버튼을 누르면 거울을 끄게 만들게 해보자.


버튼을 누르고 Add Component를 눌러 Udon Behaviour를 추가해주자.

프로그램 소스에 아무 것도 없다. New Program을 눌러보자.

그럼 뭔가 생겼다. 눌러보면 생긴 위치가 나온다.. Open Udon Graph버튼을 눌러보자.


공허한 창이 하나 뜬다. 상단의 Scene을 누르면 다시 편집화면으로 바뀌고 Udon프로그램이 있는 물체를 선택 후 Udon Graph를 누르면 이런 우동창이 뜬다.


우측 상단에 Add Node버튼을 눌러보자.


그럼 Nodes라는 리스트가 뜨는데, 각자 좀 설명을 하자면

Events - 조건 (특정 행동들 ex:클릭, 콜라이더와 충돌, 주기적으로 업데이트등)

Special - 여러 문법 (조건문, 반복문등 프로그래밍 문법 같은)

Types - 타입 (컴포넌트)

Behaviour - 우동 컴포넌트 제어관련

System - 기본 변수들(정수,실수,부울)

UnityEngine - 유니티 내장 컴포넌트 관련?

VRCSDK3 - 구 VRCSDK 기능들 일부?


우리는 '버튼을 눌렀을 때'라는 조건을 찾아야한다. Events에 들어가보자.


여러 조건들이 나온다. 예전 VRC_Trigger에서 봤던 친숙한 것들 일 것이다.


버튼을 누른걸 감지하기 위해 Interact를 추가해주자. 귀찮으면 위에 검색창에서 찾자.


Interact노드가 추가 되었다. 이제 거울을 끄게 하기위해 뭔가를 추가해야한다. 


다시 Add Node를 누르고 GameObject.SetActive라는걸 찾아서 넣자. 그럼 위 사진 처럼 하나 더 노드가 생긴다.


Active노드에 Value를 체크하면 물체를 켜는 것이고 체크 해제시 물체를 끄는 게 될 것이다.


Interact쪽의 화살표를 누른채 Set Active쪽 화살표로 연결해보자. 연결이 된다.


문제가 있다. 지금 이 노드들은 거울은 끄는 게 아닌 버튼을 눌렀을 경우 버튼이 꺼진다.

따라서 instance쪽에 뭔가를 또 연결해야한다.



Variable GameObject를 추가하자. GameObject라는 걸 담을 수 있는 변수를 만드는 것이라 보면 된다.

(변수:무언가를 담을 수 있는 저장 공간이라고 보면 된다.)


추가하고 나서 name은 원하는대로 짓고, public을 체크해보자.

이름은 target으로 짓겠다.


public체크를 하고나면  Button의 우동 컴포넌트에 설정할 수 있는 공간이 생긴다! 

여기에 끄고 켤 물체를 추가해보자. (하이러키에서 끌어오면 된다.)


이 강좌에선 저곳에 거울을 넣을 것이다.

이제 저 target변수를 Set Active쪽의 instance쪽에 연결하기 위해 Get Variable노드를 추가해주고 연결하자.


이래도 문제가 있다.. 이 노드들의 경우 버튼을 누르면 무조건 거울이 꺼지기만 하고 켜지진 않을 것이다.


이 방법을 해결해야한다. 저기 Active노드의 value쪽에 뭔가를 연결하면 되지 않을까?


뭔가 갑자기 많아 진 것 처럼 보일텐데, 사진에 나온 숫자 순서대로 하나하나 설명하겠다.



1.먼저 Bool타입 변수를 하나 만들어준다. 이름은 switch로 했다. Bool타입은 참/거짓을 저장하는 타입이다.

외부에 노출시키진 않을거니 아까 만든 target 변수와는 달리 public은 체크하지 않는다.


2.switch변수를 하나 가져온다.


3.Unary Negation노드는 연결한 변수의 상태를 반전 시켜준다. 즉 switch변수와 연결했으므로 현재 출력에는 switch변수의 반대를 상태를 반환한다.

(switch는 bool타입 이므로 참이면 거짓, 거짓이면 참)


4.Set Variable노드를 이용해 switch변수를 Unary Negation노드에서 나온대로 설정해준다.

Set Variable노드 역시 조건 Interact와 연결되어야하므로 아까만든 active노드 옆에 연결.



완성이다. 

테스트 해보고 싶으면 Interact조건대신 mouse down조건을 써서 유니티에서 실행하여 버튼을 눌러보자.


AO1W0U7bMBT9lcrPceXYjmNX4mEbDKFJbBLQl6mqbOemyxYSlDiwqvTL9rBP2i/MpS0bTUBVB4JNU6sqqe3k3HPPPff++PZ9hi513gAafJyhtMnzY33ub9BQV5k2OYzPisxND4pJVsChX3pvPoN1KEBNlvhtQFIlI02xYtJgrhOFDSiFaUKVZLHlANRvvijrzGVlgQYz9BUNcBiJPgnQ1F/S2F/OA1SUCZwd7dceCPInfn1HAUrz8mq1NlruHC4w1zegmwXAJazhMpIZyora6cLC0T4aLB5euyorJqtlhObBLsdOprWD8/7JzZ9B77y2ZZVnJugNoap9cHu8TxafoPemyV1TwV4Bjat0HvQ+NCbP7DuYnpZfoNgzcawjG4lQMQ5Eqmunqwm4P8P1uixz0MXjAjut/CteHqy3Oq93xYXmo8XBLq0vIa8Q32pc2oTTiFMcxwYwh8hgI2yMY5JaLmlIRRS3NR5ScitxKf9LvL7KnP30j2npheN6ijxu5fitEuvsIv3x+ATcK+uySxjfLb717bD0JbguxFgSwSIpMOMiwZyEgCVQjY0kDKQNlVHywUJU7VaTRiFJEkqxNYZhzrnAKlIxVlYyH7RVCVfXxD+VGasFVSlOScwxN94KdBrFGKQWBLhSJpJ+491SRoRLmaREYTCphyxshHUkBJZJImXKjZXxzZnnKvh2pg4uoXDjo8JBpX9r9IwxIjgLMZOeIk59xs3iBwgTkoKwVoiORs/l/dxvULVVdjep2kR/CG68tvNb7NvkuAM7DddDCmnb9+Nb9our2U4utymDB7mU/C8nc6txoEXmHXfzxlde+MlaV9NjmOgFUff43+YsQhQzkoHCViqKeRJT7MvCSzmKIZVSCWU65u2Q8xX7vD2J7GRsj2NZLZK6FLeVhbZC5oqunadLccFWTD5J2M8uzZ0bxWj+Ew==


위에 문자를 복사하고 우동 노드에서 붙여넣기하면 위 사진대로 나온다.


예전 월드 강좌들과는 달리 트리거 설명은 이런식으로 최종 완성 사진을 보여주는 게 낫겠다..


조개껍데기 미리 작성 후 정보글 시트에는 Udon출시 후 추가 예정 2019.12.23 18:00:58
GㅡM 우동 추 2019.12.23 18:03:43
itoar 우동추 - dc App 175.223 2019.12.23 18:07:07
Byanka 우동추 - dc App 2019.12.23 19:11:24
ㅇㅇ 거울하나 껐다키는게 이렇게 불-편해짐 2019.12.23 19:16:55
ㅇㅇ 우동추 - dc App 211.246 2019.12.23 21:18:56
번호 분류 제목 글쓴이 날짜 추천
338370 일반 아침브알챗 사람이없다보니 별걸다하게되네 11 OwO 2019-12-25 0
338369 일반 KENTLI 충전지가 조음? 3 ㅇㅇ 118.235 2019-12-25 0
338368 일반 완장은 보셈 3 ㅇㅇ 110.70 2019-12-25 0
338367 일반 8시간파딱 45초딱 120주딱 14 세이렊 2019-12-25 0
338366 일반 릲쥬 5000엔 17 왜린즈안함 2019-12-25 0
338365 일반 범해지고싶다 3 ㅇㅇ 125.180 2019-12-25 0
338364 일반 노이있는 압타월드 이름이뭐엿지 6 ㅇㅇ 1.241 2019-12-25 0
338363 일반 나중을 생각한다면 스팀말고 브이알챗로그인하라던데 뭔소리냐 1 ㅇㅇ 116.122 2019-12-25 0
338362 일반 야한유우코 야한킷슈친구 게또오호호홍 세이렊 2019-12-25 0
338361 일반 아바타 존나올려서 렙업할수도있음? 4 ㅇㅇ 223.39 2019-12-25 0
338360 일반 거의 6시간 가까이 떠들었다 양산형이세계물 2019-12-25 0
338359 일반 완장아 내가 너한테 잘못한거있냐? 1 히쁘니 2019-12-25 0
338358 일반 범해줫슴 좋겟다 면요리좋아함 2019-12-25 0
338357 일반 진자 할거업내 2 면요리좋아함 2019-12-25 0
338356 일반 롤할롤 2 블프 2019-12-25 0
338355 일반 안녕~~~ 1 노라 2019-12-25 0
338354 일반 심시매 2 면요리좋아함 2019-12-25 0
338353 일반 아바타가 이상하게 보여 1 ㅇㅇ 182.222 2019-12-25 0
338352 일반 화본역거울쪼개서 밖에다놨네 4 OwO 2019-12-25 0
338351 일반 니애미 6 dox 2019-12-25 0
338350 일반 S그룹 디코방 저격한다 1 ㅇㅇ 124.80 2019-12-25 0
338349 일반 친구 수는 어떻게 볼 수 있냐 3 ㅇㅇ 182.222 2019-12-25 0
338348 일반 설마사카 아직도 안잠? 4 잉두 2019-12-25 0
338347 일반 다들 크리스마스 잘 보냈니 2 모모덮밥 2019-12-25 0
338346 일반 브갤바이 36 1 꿀뚤 2019-12-25 0
338345 일반 저거 사기는 하는구나 1 ㅇㅇ 182.219 2019-12-25 0
338344 일반 빗세맵이 진짜 빗세보다 쉬운거지? 5 카나★ 2019-12-25 0
338343 일반 아직도 안잠??? 2 잉두 2019-12-25 0
338342 일반 H방가서 엉덩이 흔드는 움짤 10 GORE. 2019-12-25 0
338341 일반 카톡 상태메시지 추천점 2 고무백 2019-12-25 2
338340 일반 우흥 고무백 2019-12-25 0
338339 일반 브붕이들 머함 3 카이카미 2019-12-25 0
338338 VRC일기 금일의 VRC 일기 1226 2 Byanka 2019-12-25 1
338337 일반 1시간 전에 H방에서 만난 분... ㅇㅇ 117.111 2019-12-25 0
338336 일반 브붕이들한테 크리스마스에 생긴일 Space 2019-12-25 0
338335 일반 아직 안잠? 3 잉두 2019-12-25 0
338334 질문 형아...시리우스가 이상해.. 3 설탕달다 2019-12-25 0
338333 일반 친창에 메리노 쓰는사람보이는데 왜린즈안함 2019-12-25 0
338332 일반 어그로덱들이 ㄹㅇ 재미 다망치는거같음 3 ㅇㅇ 223.62 2019-12-25 0
338331 일반 댓글읽어줌 18 Space 2019-12-25 1
념글 삭제글 갤러리 랭킹