실제 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);
// 충돌이 끝나면 색을 흰색으로 변경
}
}
충돌 시 색이 검게 되고 충돌이 끝나면 흰 색으로 바뀐다.
(위 사진에서는 회색의 이미지를 씌워서 흰색처럼 보이진 않는다)
private void OnTriggerStay(Collider other)
{
if(other.name == "Cube")
{
rigid.AddForce(Vector3.up * 2, ForceMode.Impulse);
}
}
위의 사진에서 큐브에 is trigger 설정을 주었다. 메인 공에 OnTriggerStay메서드를 정의하고, Cube와 접촉했을 때, 물체의 중력에 up을 주었다.
따라서 위에 큐브에 닿을 경우 슝~ 하고 올라가는 효과를 주었다.
엄청 간단한 플래시 게임 같은 경우 이 정도로 만들 수도 있을 것 같다.