title: “7. vrchat의 이벤트 함수” categories:

  • UDONSHARPcourse

    #7. vrchat의 이벤트 함수 : 네이버 블로그

디스코드 rage147#2898 친추해주시거나

디스코드 서버오셔용~~

https://discord.gg/E8rF9uTggA

​우동 관련 이야기 해용~~

vrchat의 이벤트 함수입니다.

별은 중요도로 3개 ☆☆☆만점입니다

override를 치고 인텔리센스 기능으로 볼 수 있습니다

위의 2개는 재정의 함수로 무시하겠습니다

아래는 목록입니다

궁금한 이벤트는 컨트롤+f 찾기 기능으로 찾아주세요

별이 없는 이벤트는 무시해도 됍니다

InputDrop

InputGrab

InputJump

InputUse

InputLookHorizontal

InputLookVertical

InputMoveHorizontal

InputMoveVertical

Interact☆☆☆

MidiControlChange

MidiNoteOff

MidiNoteOn

OnDeserialization ☆☆

OnDrop☆

OnOwnershipRequest

OnOwnershipTransferred

OnPickupUseDown☆☆☆

OnPickupUseUp☆☆☆

OnPlayerCollisionEnter

OnPlayerCollisionExit

OnPlayerCollisionStay

OnPlayerJoined ☆☆☆

OnPlayerLeft ☆☆☆

OnPlayerParticleCollisionEnter☆☆☆

OnPlayerParticleCollisionStay☆☆☆

OnPlayerParticleCollisionExit☆☆☆

OnPlayerRespawn ☆☆

OnPlayerTriggerEnter☆☆☆

OnPlayerTriggerStay☆☆☆

OnPlayerTriggerExit☆☆☆

OnPostSerialization

OnPreSerialization

OnSpawn☆

OnStationEntered

OnStationExited

OnVideoEnd

OnVideoError

OnVideoLoop

OnVideoPause

OnVideoPlay

OnVideoReady

OnVideoStart

PostLateUpdate☆


Input 그룹

InputDrop

InputGrab

InputJump

InputUse

InputLookHorizontal

InputLookVertical

InputMoveHorizontal

InputMoveVertical

input형제들은 https://docs.vrchat.com/docs/input-events

[Input Events You can read the input of a Player’s controller in a unified way across all platforms by using Udon Input Events. These events will work correctly even when the player has remapped their controls. There are currently two types of events - Button and Axis, which include boolean and float values. Each…

docs.vrchat.com](https://docs.vrchat.com/docs/input-events)

요기에 정리 되어있습니다

Udon Input Events를 사용하면 모든 플랫폼에서 컨트롤러 입력을 읽을 수 있습니다. 이 이벤트는 플레이어가 컨트롤러를 다시 맵핑한 경우에도 올바르게 작동합니다.

     
  PC VR
Drop 드롭 오른쪽 클릭 놓을때?(모르겠음)
Grab 그랩 왼쪽 클릭 그랩
Jump 점프 스페이스바 점프버튼?(모르겠음)
Use 유즈 왼쪽 클릭 트리거

주의!! 물건을 집은 후 사용이 아닌 그냥 클릭했을때도 인식됨

   
InputLookHorizontal 수평고개돌릴때
InputLookVertical 수직고개돌릴때
InputMoveHorizontal 수평움직일때
InputMoveVertical 수직움직일때

Interact☆☆☆

상호작용 이벤트입니다

물체를 클릭 할 때 실행됩니다

매우매우매우중요


MidiControlChange

컨트롤러 변경됬을때

MidiNoteOff

놓았을 때

MidiNoteOn

눌렀을 때


OnDeserialization ☆☆☆

싱크(동기)가 된 후 실행됨

변수가 동기화 될 때 실행되는 이벤트

또 플레이어가 방에 입장하면 동기를 맞춘 후에 실행됩니다


OnDrop☆

PickUp한 오브젝트를 내려놓을때 실행됨


OnOwnershipRequest

다른 플레이어가 소유권 이전을 요청 할 때 실행됨

return으로 true또는 false로

소유권 이전을 승인, 거절 할 수 있음


OnOwnershipTransferred

소유권이 넘어간 경우 실행됨


OnPickupUseDown☆☆☆

OnPickupUseUp☆☆☆

OnPickupUseDown

잡은 상태에서

버튼이 내려간(클릭한) 경우 실행됨

OnPickupUseUp

잡은 상태에서

버튼이 올라간(뗀) 경우 실행됨

잡기 위해서는 AutoHold가 켜져 있어야 함

PC VR 공용 이벤트임. 총을 쏘는것처럼 잡은 물체에 기능을 넣을 때 사용


OnPlayerCollisionEnter

OnPlayerCollisionExit

OnPlayerCollisionStay

플레이어가 isTrigger가 꺼져 있는 콜라이더와 충돌할 때 실행되는 이벤트라고 하는데

움직이는 오브젝트트에만 실행됨.

플레이어가 직접 오브젝트로 들어가는 경우 실행이 안됨

잘 모르는경우 절대 쓰지 마세용. 실행이 안될거에요

자세한건 공홈 메뉴얼 참고

https://docs.vrchat.com/docs/player-collisions

[Player Collisions Udon has three ways to detect when a Player and an Object Collide - Triggers, Physics, and Particles. Triggers If you want to detect when a player has entered or exited an area, your best bet will be to use the OnPlayerTrigger events. There are three of these: OnPlayerTriggerEnter is called when a p…

docs.vrchat.com](https://docs.vrchat.com/docs/player-collisions)


OnPlayerJoined ☆☆☆

OnPlayerLeft ☆☆☆

Joined는 다른 플레이어가 월드에 들어오면 실행됩니다

Left는 다른 플레이어가 월드에서 나가면 실행됩니다

플레이어 카운터나 새로 들어온 플레이어를 동기시킬때 사용

주의할 점은 Left한 플레이어의 id는 -1로 나온다은 점!

즉 누가 나갔나 특정 불가!!


OnPlayerParticleCollisionEnter☆☆☆

OnPlayerParticleCollisionStay☆☆☆

OnPlayerParticleCollisionExit☆☆☆

월드 기능을 만들 때 자주 쓰이는 이벤트입니다

파티클이 플레이어와 충돌하면 실행됩니다

파티클은 Collision 모듈이 켜져있어야하고

Type World

Mode 3D

Send CollisionMessage가 켜져 있어야합니다


OnPlayerRespawn ☆☆

플레이어가 메뉴에서 리스폰을 누를 때 실행되는 이벤트입니다

리스폰 할 때 스폰 위치가 아닌 다른곳에 스폰하고 싶다 하면

이 이벤트가 실행 될 때 텔레포트를 하게끔 설정하면 되겠지요


OnPlayerTriggerEnter☆☆☆

OnPlayerTriggerStay☆☆☆

OnPlayerTriggerExit☆☆☆

온플레이어트리거 그룹은

플레이어가 IsTrigger가 체크된 콜라이더에 충돌하면 실행되는 이벤트입니다

기능을 만들 때 많이 쓰입니다

Enter Stay Exit 가 있는데 각각

충돌할때 충돌하고있을때 충돌하고나왔을때

를 의미합니다


OnPostSerialization

네트워크입니다

Serialization은 동기라고 생각하시면 됩니다

동기 요청 후에 실행되는 이벤트입니다

result라는 구조체(자료형)이 생기는데

success와 byteCount를 사용 할 수 있습니다

success는 동기가 성공했는지 참 거짓을 반환합니다

byteCount는 동기한 데이터의 크기를 바이트로 반환합니다


OnPreSerialization

동기 직전에 실행되는 이벤트입니다


OnSpawn☆

오브젝트가 Spawn으로 생성이 될 때 실행됩니다


OnStationEntered

OnStationExited

Station은 의자입니다.

Enter는 의자에 앉을 때

Exit는 의자에서 나올 때 실행되는 이벤트입니다


OnVideoEnd

OnVideoError

OnVideoLoop

OnVideoPause

OnVideoPlay

OnVideoReady

OnVideoStart

다들 비디오 플레이어와 관련된 이벤트입니다

엔드는 끝날때

에러는 로딩 중 에러가 발생했을때

루프는 루프 설정을 했을 시 비디오가 종료되고 다시 반복 할 때

포즈는 비디오가 일시정지할때

플레이는 플레이될때

레디는 새 비디오를 로딩할때

스타트는 비디오가 중지된 상태에서 시작할때


PostLateUpdate☆

ik연산이 끝난 후 실행되는 이벤트입니다

본의 가장 정확한 위치를 얻어 낼 때 사용하면 좋습니다

https://gall.dcinside.com/mgallery/board/view/?id=vr&no=174124

위 링크는 ik에 관한 글입니다

현재는 네트워크에 따라 대여폭을 조절해 지연이 없게끔 작동합니다

이걸로 vrchat 이벤트 함수의 설명이 끝났습니다.

다 외울 필요는 없고 한번 쓱 눈으로 본 뒤

이런 이벤트가 있구나 정도로만 넘어가시먼 됩니다

업데이트: