(주) 망나니 힘집
[UNITY] 물리 충돌 이벤트와 트리거 이벤트 본문
<이번 시간은 물리 충돌 이벤트와 트리거 이벤트에 대해서 알아보겠습니다. >
* 물리 충돌 이벤트 *
움직이는 공 A, 가만히 있는 공 B 가 존재하고, A가 B의 공에 충돌했을 때, B의 공 색상을 변경하는 스크립트.
public class NewBehaviourScript : MonoBehaviour
{
//MeshRenderer : 오브젝트의 재질 접근을 위해 선언.
MeshRenderer mesh;
Material mat;
void Start()
{
mesh = GetComponent<MeshRenderer>();
mat = mesh.material; //mesh 안에 있는 mmaterial 요소를 꺼내기 위함
}
//충돌했을 때 발생하는 함수
//OnCollisionEnter : 물리적 충돌이 시작할 때 호출하는 함수
//Collision : 충돌 정보 클래스
void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.name == "A 공" )
mat.color = new Color(0, 0, 0); //(0,0,0) : 검은색
//Color : 기본 색상 클래스
//Color32 : 255 색상 클래스
//>>> 충돌하면 검은색으로 변한다.
}
// 주의 : 충돌이 이미 존재할 때, 원하는 물체와 닿았을 때 상태를 변화시킬려면 따로 조건을 걸어주어야 함.
//그러기 위해서는 원하는 물체의 정보를 읽어와야 한다.
//OnCollisionStay : 충돌 중일 때 호출되는 함수
void OnCollisionStay(Collision collision)
{
}
//OnCollisionExit : 물리적 충돌이 끝날을 때 호출되는 함수
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.name == "A 공")
mat.color = new Color(1,1,1); //(1,1,1) : 흰색
}
//>>> 충돌했다가 떼면 흰색으로 변한다.
}
* 트리거 이벤트 *
공이 점프 영역[cube]에 들어서면 공이 위로 움직일 수 있도록 만드는 스크립트.
//오브젝트 재질을 투명하게 만드는 방법
Rendering Mode -> Transparent 로 변경 후 Albedo 컬러에서 A 값을 변경한다.
//주의 : Box collider -> is Trigger 체크해야 한다.
public class NewBehaviourScript : MonoBehaviour
{
Rigidbody rigid;
void Start()
{
rigid = GetComponent<Rigidbody>();
}
//OnTriggerEnter : 충돌할 때
void OnTriggerEnter(Collider other)
{
}
//OnTriggerStay : 콜라이더가 계속 충돌 중일 때.
void OnTriggerStay(Collider other)
{
//Trigger 는 물리적인 충돌이 아닌 콜라이더가 겹쳐는지만 확인.
if(other.name == "cube")
{
rigid.AddForce(Vector3.up * 2, ForceMode.Impulse);
}
//>>> 오브젝트가
}
//OnTriggerExit: 충돌이 끝날 때
void OnTriggerExit(Collider other)
{
}
// 실제 물리적인 충돌로 발생하는 이벤트
private void OnCollisionEnter(Collision collision){ }
private void OnCollisionStay(Collision collision) { }
private void OnCollisionExit(Collision collision) { }
// 콜라이더 충돌로 발생하는 이벤트
private void OnTriggerEnter(Collider other) { }
private void OnTriggerStay(Collider other) { }
private void OnTriggerExit(Collider other) { }
<이번 시간은 물리 충돌 이벤트와 트리거 이벤트에 대해서 알아보았습니다. >
'유니티 최고 > Unity' 카테고리의 다른 글
카메라 시점 조절하기 (0) | 2022.01.22 |
---|---|
[UNITY] UI- 텍스트, 이미지, 버튼, 앵커 (0) | 2022.01.18 |
[UNITY] 오브젝트를 이동 (0) | 2022.01.18 |
[UNITY] rigidbody , collider , 재질, 물리재질 (0) | 2022.01.18 |
[UNITY] DeltaTime (0) | 2022.01.17 |