안녕하세요. 빵빵빵 타이쿤 개발중인 유니티 개발자 동식입니다. 오늘은 OnTriggerEnter에 대한 고찰을 해보고자 합니다.
유니티에서 OnTriggerEnter정말 많이 쓰시죠? 이는 이벤트 함수로 특정 상황이 발생하면 자동으로 호출되는 진기명기한 친구입니다. 정말 애용하듯 사용하는 함수지만 오늘도 헷갈려서 20분동안 갈피를 찾지 못한 저. OnTriggerEnter에 대해 까먹지 않도록 메타인지를 길러볼겸 또 까먹었을 미래의 나를 위해 그리고 당혹스러운 여러분을 위해 이 글을 작성합니다.
https://docs.unity3d.com/kr/530/ScriptReference/Collider.OnTriggerEnter.html
위는 유니티 문서함에 있는 OnTriggerEnter라는 친구에 대한 스크립팅 예시가 있으니 참고해보십쇼.
OnTriggerEnter를 사용하기 위한 조건
Trigger와 RigidBody를 본적이 있나요? Trigger는 말 그대로고 RigidBody는 중력 등 물리 요소를 구현해둔 컴포넌트 입니다. 여러분 항상 기억해야 합니다. Collider와 RigidBody를 세트라는 사실을...
서로를 인지 할 모든 오브젝트엔 Collider 컴포넌트가 부착되어 있어야 하고
Collider에 닿은 오브젝트에 대한 정보를 받으려면 RigidBody가 함께 있어야 합니다.
예를들어
다음과 같은 구성이 있습니다.
좌측에 있는 흰 박스는 Destroy Zone으로 본인에게 닿는 오브젝트를 삭제시키는 역할을 합니다.
그리고 중앙에 있는 선은 우유통으로 지속적으로 좌측으로 이동합니다.
우유통이 좌측으로 이동하다가 흰 박스에 닿으면 삭제되는 구성의 개발을 할 때 어느 오브젝트에 Collider와 RigidBody를 부착해야 할지 감이 오시나요?
정답은
Destroy Zone은 Collider와 RigidBody
우유통엔 Collider입니다!
그렇다면 직접 개발을 해보겠습니다.
OnTriggerEnter 사용하기
Destroy Zone에는 Collider와 RigidBody를 붙여줬습니다.
그리고 Collider가 Trigger의 역할을 하도록 is Trigger를 체크 해줍니다.
우유병엔 Collider만 넣어줍니다.
이제 다 된거나 다름 없습니다. 스크립트를 작성합시다.
public class DestroyMilkGlass : MonoBehaviour
{
[SerializeField] private string destroyTargetName;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name.Contains(destroyTargetName))
{
Destroy(collision.gameObject);
}
}
}
위 내용을 작성했습니다. Trigger에 닿인 오브젝트의 이름에 "Milk"가 포함되면 Destroy하도록 코드를 작성했습니다.
웬만해선 Layer를 사용해서 동일 Layer에 포함된다면? 오브젝트를 삭제하시오. <-- 처럼 많이 씁니다.
저는 Contains를 사용하고 싶어서 넣었습니다. 저처럼 사용하면 Inspector창에서 변수 이름도 적어줘야 하고 오브젝트 이름도 맞춰 수정해야 하기때문에 Layer를 사용하는 것보단 불편합니다. 그러니 저처럼 쓰지 마시고 Layer를 활용해주세요. (전 나중에 수정 할 것입니다 후후)
마지막으로 해당 스크립트를 Collider와 RigidBody를 가진 Destroy Zone에 부착합니다.
그럼 결과를 볼까요?
잘 없어지는 모습을 볼 수 있습니다.
RigidBody를 아무데나 넣어놓고 저처럼 어? 뭐야? 왜 안되는겨? 하는 사람이 없길 바라며 전 물러갑니다.
'Project > 빵빵빵 타이쿤' 카테고리의 다른 글
[빵빵빵 타이쿤 개발일지] 유니티 Transform과 RectTransform 차이점 (0) | 2024.10.18 |
---|---|
[빵빵빵 타이쿤 개발일지] 유니티 게임 일시정지 구현하기(Time.scaleTime) (4) | 2024.10.16 |
[빵빵빵 타이쿤 개발일지] 좌우로 이동하는 무한 레일 제작. 근데 배경 스크롤링(background scrolling)을 곁들인... (1) | 2024.10.07 |
[빵빵빵 타이쿤 개발일지] 2D 게임에서 UI와 배경 오브젝트의 차이와 유니티 2D 해상도 맞추기 (2) | 2024.10.02 |