Trigger 기능을 사용하여 삭제해주는 Delete Object만들기


원 강좌 URL : http://progagmer.blog.me/198664673



이번 강좌는 개인적으로 따라가는데 정말 문제가 많았습니다. 그 문제에 대해서는 설명이 끝난 후 마무리로 하도록 하겠습니다.


우선 이번 강좌의 제목처럼 삭제를 위한 Delete Object를 생성해줍니다. 우클릭하여 3D객체(Object)에 육면체(Cube)를 선택해줍니다. 


선택을 해준 후 위의 주황상자안의 값으로 설정을 해 주시면 됩니다. 원 강좌와 최대한 같은 값으로 설정을 해 보았습니다. 하지만 저의 마녀의 위치를 보시면 아시겠지만 화면의 정 중앙이 아닙니다. 저는 보다 원활한 표현을 위해 X값을 -190으로 설정하였습니다.


그리고 Delete(Cube)의 Mesh Renderer를 체크 해제해줍니다.



그리고 프리펩에서 Hierarchy텝으로 EnemySet을 옮겨와서 편집을 해 줍니다.


아래의 컴포넌트를 추가해줍니다. 각 펌프킨 객체마다 추가를 해 주어야 합니다. 그 방법은 복사 붙여넣기 식이므로 1개에 우선 2개의 컴포넌트를 추가 할 예정입니다. 그 두 컴포넌트의 이름은 Box Collider Rigidbody입니다. 아래와 같이 Add Component버튼을 누르면 나오는 검색창에 이름을 입력해서 쉽게 추가할 수 있습니다.


첫번째 펌프킨 객체에 두개의 컴포넌트를 추가하셨다면 아래와 같은 화면을 보실 수 있습니다. 그 순서는 달라도 상관이 없습니다.


우선 아래의 주황색으로 표시된 부분의 설정값을 입력해주시기 바랍니다.

입력을 다 하셨다면 이제 복사 붙여넣기를 해 보겠습니다. 2개의 컴포넌트를 한번에 복사할 수는 없고, 하나의 컴포넌트를 여러 객체에 한번에 붙여넣기로 추가는 가능 합니다. 우선 첫번째 펌프킨객체에 추가한 컴포넌트 이름(Box Collider 또는 Rigidbody)을 마우스 오른쪽 클릭해줍니다. 아래의 그림과 같이 오른쪽 클릭 후 Copy Component를 선택해줍니다.


그리고 왼쪽의 계층 탭에서 나머지 펌프킨 객체를 모두 선택해줍니다. 모두 활성화 시켜서 하나하나 선택을 해야 합니다. 한 가지 팁으로는 모두 트리를활성화 시킨 후 시프트키로 2번째 ~ 15번째 펌프킨을 선택한 후 Set2에서 Set5까지를 시프트 키를 누른체로 선택하면 선택 해제가 됩니다. 그 후 오른쪽 인스펙터에서 오른쪽 클릭을 한 후 Paste Component As New(새 컴포넌트로 붙여넣기)를 선택합니다.

다른 펌프킨 객체에 방금 추가한 컴포넌트가 추가되었다면 둘중 나머지 하나도 같은 방법으로 컴포넌트 복사를 하여 추가해줍니다.


추가를 하셨다면 프리펩에 반영을 하기위해 Apply(적용)버튼을 눌러줍니다.


이제는 Delete를 처리할 C# 스크립트를 작성 해 보겠습니다.


3_Script에 새로 Delete라는 스크립트를 추가 해 줍니다.

그 내용은 아래와 같습니다.

위의 내용으로 작성을 해 줍니다.

먼저 이번에는 기본으로 제공이 되는 Start나 Update가 아닌 다른 함수명을 사용하였습니다. OnTriggerEnter는 유니티에서 기본으로 제공하는 구문으로 충돌이 발생할 때 수행할 시능을 정의하는 함수라고 이해하였습니다. 즉 간단하게 제가 이해한 설명을 덭붙이면 Delete라는 Cube를 트리거로 설정을 하였고(isTrigger 에 True값을 줬음 - 체크), 다른 Collider객체인 Pumpkin 객체들이 해당 Cube안으로 들어가면 발동이 되어 그 객체를 지우는 역할을 수행합니다.


이전에 Delete되지 않던 문제가 있었습니다. 강좌를 제가 잘못 봐서 놓친건지는 모르겠지만 이유를 모르겠습니다. 강좌를 다 따라 해 보았으나 호박들이 게임 화면에서조차 사라지지 않았습니다.


그 원인은 Delete 객체에 Delete 스크립트를 추가하지 않았기 때문인데요.

작성한 Delete스크립트Delete(Cube)객체에 드레그 엔 드롭으로 추가해줍니다.

그러면 플레이시 호박들이 화면 밖까지 그냥 나가는 것이 아니라 지워지는 것을 보실 수 있습니다. 하지만 Hierarchy창에서는 여전히 남아있는데요. 해당 문제는 아래의 과정으로 해결을 할 수 있습니다.


Prefab에 추가되어있는 Effect_del스크립트EnemySet에 추가해줍니다. 이 작업 후에도 역시 Apply를 !




이 강좌를 다 해보셔야 이해하실 수 있는 내용에 대해서 이야기를 하자면 랜덤으로 생기던 호박들의 위치가 총 5단계로 설정을 했는데 저는 작업중에 7단계 이상으로 변해버리기도 했습니다. (스크립트의 내용을 수정하지 않았음에도 불구하고 말이죠)


그리고 Delete라는 객체에 스크립트를 추가해주지 않고, 참 우여곡절이 많았지만 잘 처리하였습니다.


이번 강의를 다 하셨다면 플레이 시 아래와 같은 결과를 얻으실 수 있습니다.



+ Recent posts