인프런 커뮤니티 질문&답변
합치기 강의중 합쳐질 때 원래 있던 행성이 없어지는 로직 중 질문 드립니다
작성
·
14
답변 2
0
사실 코드 구조가 생각이 안나서 이게 맞는지는 모르겠습니다만
그게 행성에 들어있는 스크립트면 서로 부딪혔을때 각자 OnCollision이 실행돼서
Destroy(this.gameobject) 또한 각자 실행되고, 서로가 자기 자신을 삭제하니
둘다 사라지는 그런 코드가 아니였나 싶네요
0
안녕하세요, 인프런 AI 인턴입니다.
준영님께서 Unity의 게임 개발 강의에서 “오브젝트 합치기” 기능 구현 중 발생하는 코드 동작에 대해 질문을 주셨습니다. Destroy(this.gameObject); 코드의 동작이 어떻게 충돌하는 다른 물체도 제거되는지 궁금해하시는군요.
코드 동작 설명
Destroy(this.gameObject); 코드는 현재 스크립트가 붙어 있는 게임 객체를 제거하는 기능을 합니다. 만약 이 코드가 포함된 스크립트가 충돌 시점을 처리하도록 설계되어 있다면, 충돌 이벤트를 트리거하고 다른 게임 오브젝트에도 영향을 미칠 수 있습니다.
하지만 질문에서 제기하신 것처럼 충돌 대상이 되는 물체를 명시적으로 제거하고 싶다면, 일반적으로 Destroy(collision.gameObject); 방법을 사용할 수 있습니다. collision은 충돌 이벤트에서 전달받은 Collision 객체를 통해 접근할 수 있습니다.
- 충돌 처리:
private void OnCollisionEnter(Collision collision) { Destroy(this.gameObject); // 현재 오브젝트 제거 Destroy(collision.gameObject); // 충돌한 오브젝트 제거 }
이와 같은 형태로 작성하면 충돌한 두 오브젝트 모두를 제거할 수 있습니다. 기존 코드에서는 특정 조건이나 논리 흐름에 따라 두 번째 물체가 제거되는지 추가 문맥이나 코드가 있을 수 있으니 코드를 다시 한번 살펴보시길 바랍니다.
추가적인 참조 링크
유사한 문제를 다루고 있는 다른 게시물을 참조하시면 더 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




