본문 바로가기
Programming/Unity

[Unity] 13. 물리 충돌 이벤트

by 가가가가가가 2022. 7. 10.
반응형
  • 물리 충돌 이벤트
    - MeshRenderer를 통해서 오브젝트의 재질 접근
    - OnCollisionEnter : 물리적 충돌이 시작할 때 호출되는 함수
    - OnCollisionStay : 물리적 충돌이 일어나고 있을 때 호출되는 함수
    - OnCollisionExit : 물리적 충돌이 끝났을 때 호출되는 함수
    - Color : 기본 색상 클래스
    - Color32 : 255 색상 클래스
    - Collision : 충돌 정보 클래스
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OtherBall : MonoBehaviour
{
    MeshRenderer mesh;
    Material mat;

    void Start()
    {
        mesh = GetComponent<MeshRenderer>();
        mat = mesh.material;
    }
    

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "My Ball")
        {
            mat.color = new Color(0, 0, 0);
        }
    }

    void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.name == "My Ball")
        {
            mat.color = new Color(1, 1, 1);
        }
    }
   
}

 

  • 트리거 이벤트
    - Box Collider > Is Trigger 체크 
    - TriggerStay : 콜라이더가  계속 충돌하고 있을 때 호출
    - OnTriggerEnter : 물리적 충돌이 시작할 때 호출되는 함수
    - OnTriggerStay : 물리적 충돌이 일어나고 있을 때 호출되는 함수
    - OnTriggerExit : 물리적 충돌이 끝났을 때 호출되는 함수
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyBall : MonoBehaviour
{
    Rigidbody rigid;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();
    }
    
    void OnTriggerStay(Collider other)
    {
        if (other.name == "Cube")
        {
            rigid.AddForce(Vector3.up * 2, ForceMode.Impulse);
        }
    }
}

 


참고

반응형

댓글