Unity - 7. 물리 충돌에 따른 이벤트 주기

Bloooooooooooooog..·2023년 5월 8일
0

Collision과 Trigger

실제 rigid가 있는 물체끼리의 충돌의 collision으로 그 외 rigid가 없는 물체와의 접촉은 Trigger로 반응 설정을 할 수 있다.

trigger를 설정할 물체의 경우 물체의 box collider 컴포넌트의 is Trigger 옵션을 체크해주어야 한다.

일반적인 충돌

public class otherBall : MonoBehaviour
{

    MeshRenderer mesh;
    Material mat;
   
   // 물체 설정을 변경해주기 위해 인스턴스를 생성한다.
 
   
    void Start()
    {
        mesh = GetComponent<MeshRenderer>();
        mat = mesh.material;    
    }


    private void OnCollisionEnter(Collision collision)
    {                           // 충돌 정보 클래스
        // 충격을 했을 경우
        if (collision.gameObject.name == "Main Ball")
        { // 충돌을 적용할 오브젝트 이름을 설정한다
            mat.color = new Color(0, 0, 0); 
			// 충돌이 일어났을 경우 색을 검정색으로
        }

        
    }

    private void OnCollisionStay(Collision collision)
    {
        // 충돌 중의 경우
    }

    private void OnCollisionExit(Collision collision)
    { // 충돌이 끝났을 경우
        mat.color = new Color(1, 1, 1);
        // 충돌이 끝나면 색을 흰색으로 변경
    }
}

충돌 시 색이 검게 되고 충돌이 끝나면 흰 색으로 바뀐다.

(위 사진에서는 회색의 이미지를 씌워서 흰색처럼 보이진 않는다)

Trigger


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

위의 사진에서 큐브에 is trigger 설정을 주었다. 메인 공에 OnTriggerStay메서드를 정의하고, Cube와 접촉했을 때, 물체의 중력에 up을 주었다.

따라서 위에 큐브에 닿을 경우 슝~ 하고 올라가는 효과를 주었다.

엄청 간단한 플래시 게임 같은 경우 이 정도로 만들 수도 있을 것 같다.

profile
공부와 일상

0개의 댓글