본문 바로가기

UDON 강좌

UDON U# 강좌 (3) : (이벤트)콜라이더 충돌 다루기

 

안녕하세요 이번 강좌는 콜라이더 충돌 이벤트에 대해 다뤄보겠습니다.

 

콜라이더 충돌 이벤트는 콜라이더가 Rigidbody와 콜라이더가 있는 오브젝트와 충돌할 경우 발생합니다

 

먼저 저번 강좌와 같이 새로운 UDON C#(U#) 스크립트를 만든 뒤 Create Script로 새로운 C# 스크립트를 만듭니다.

먼저 이번에는 void Start() {} 함수가 필요없으니 지워줍니다.

그리고 private void OnCollisionEnter(Collision collision) {} 와

private void OnCollisionExit(Collision collision) {} 를 추가해 줍니다.

콜라이더와의 충돌을 감지한 걸 확인하기 위해 Material변수를 public(공개변수)로 만들어줍니다.

충돌이 감지돼 바뀐 머테리얼을 되돌리기 위해 변수를 하나 더 만들어줍니다. 

 

OnCollisionEnter 함수 내에 원래의 머테리얼을 변수에 담아주고 충돌중일 때 표시 할 머테리얼의 변수를 MeshRenderer를 불러와 넣어줍니다.

충돌이 끝나면 다시 원래대로 돌아가기 위해 OnCollisionExit 함수에 아까 담아뒀던 원래의 머테리얼을 MeshRenderer를 불러와 넣어줍니다.

이제 저장하고 컴파일 해준 뒤 머테리얼을 지정해줍니다.

유니티에서 픽업 오브젝트를 생성

월드 업로드 후 VRChat 내에서 픽업 오브젝트와 큐브가 충돌할 때마다 머테리얼이 바뀌는 것을 확인할 수 있습니다.

 

이전 글중 "자주쓰는 이벤트 정리"를 참고하여 다른 이벤트도 이번과 비슷하게 사용할 수 있습니다.

[바로가기] 2020/04/09 - [UDON 강좌] - UDON 자주 쓰이는 이벤트 함수 정리

p3.cs
0.00MB

 

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class <스크립트 파일이름을 그대로 적어주세요> : UdonSharpBehaviour
{
    public Material check;
    public Material original;
    public void OnCollisionEnter(Collision collision)
    {
        this.GetComponent<MeshRenderer>().material = check;
    }
    public void OnCollisionExit(Collision collision) 
    {
        this.GetComponent<MeshRenderer>().material = original;
    }

}