본문 바로가기

Unity/Unity3D

Unity - 물리충돌이벤트

1. 물리충돌이벤트함수 

: 이벤트가 일어났을때 호출되는 함수!

 

(1) 오브젝트의 재질접근 -> MeshRenderer 컴포넌트 안의 Meterial에 접근!

 

(2) CollisionEnter : 물리적 충돌이 시작할때 호출되는 함수 ->OnCollisionEnter(이벤트성 함수는 앞에 On이 들어감)

                       : 물리적 충돌상태에 있을 때 호출되는함수->OnCollisionStay

                       : 물리적 충돌이 끝났을때 호출되는 함수 ->OncollisionExit

 

(3)OnCollisionEnter 사용

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OtherBall : MonoBehaviour
{
     MeshRenderer mesh;   //1.변수 선언
     Material mat;
    void Start()
    {
        
        mesh = GetComponent<MeshRenderer>(); //2.변수 할당
        mat = mesh.material;
    } 
    
    void OnCollisionEnter(Collision collision) //3.물리충돌할때 발생하는 함수 호출
                                              //Collision은 충돌정보클래스
    {
        if(collision.gameObject.name =="MyBall") //4.MyBall Object와 충돌했을때
        mat.color = new Color(0,0,0);        //5. 재질의 색을 새로운 검정색으로 한다 
    }
}

 

 

 

2. 트리거 이벤트

: collider(콜라이더, 충돌체)가 오브젝트를 Is trigger(통과 , 충돌x) 했을때 이벤트

 

(1)관련 오브젝트 cube 생성

*tip)project 파일에서 우클릭 create - Material 생성 -> cube Inspector에 드로그앤 드랍 

     -> Rendering Mode 를 Transparent로 변경 -> 색상color설정에서 A부분을 조정(투명도)

*빛나는 정도는 emission에서 설정

 

(2)OnTrigger     : 콜라이더가 겹쳐질때호출되는 함수->OnTriggerEnter

                       : 콜라이더가 계속 겹쳐져 있을때 호출되는함수->OnTriggerStay

                       : 콜라이더가 겹쳐지는것이 끝났을때 함수 ->OnTriggerExit

 

(3)OnTriggerStay 사용

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Myball2 : MonoBehaviour
{
   Rigidbody Rigid;
    void FixedUpdate() 
    {
      Rigid = GetComponent<Rigidbody>();

      Vector3 vec = new Vector3(Input.GetAxis("Horizontal"),
                                0,
                                Input.GetAxis("Vertical"));

     Rigid.AddForce(vec, ForceMode.Impulse);
    }           
    
    void OnTriggerStay(Collider other)  //1.MyBalall2 오브젝트의 트리거 이벤트 호출 함수
    {
     if(other.gameObject.name == "Cube"){
       Rigid.AddForce(Vector3.up *2, ForceMode.Impulse);
     }
    }
}

'Unity > Unity3D' 카테고리의 다른 글

Unity - Rall and Ball project(1)  (0) 2020.11.05
Unity- UI 기초  (0) 2020.10.31
Unity -자동완성 오류  (0) 2020.10.28
Unity - 힘을 이용하여 물체 움직이기  (0) 2020.10.24
Unity - 물체 만들기  (0) 2020.10.23