본문 바로가기
관/핫한 닷지 프로젝트 게임개발

닷지 게임제작 기초 11(닷지 충돌구현 과 프리팹 다루기 편).

by 4차원 박스 2020. 7. 26.

이론은 거창하나 실제론 별거 없다 키보드로 몇줄 타탁 치고

마우스로 클릭질 몇번 하면 완성이다. 간단하니 따라해보자!

 

 

총알에 충돌감지를 구현한다.

탄알 Bullet오브젝트에 Is Trigger가 체크됨 = 트리거 콜라이더임

따라서 Bullet 스크립트에 충돌 이벤트 메서드로 OnTriggerEnter()를 작성한다

 

<원하는 기능>

1. 충돌한 상대방 겜오브젴이 플레이어 인지 확인

2. 플레이어이면 해당 게임 오브젝트의 PlayerController 컴포넌트의 Die()메서드를 실행한다.

 

스타트나 업데이트 밖에 함수를 선언한다.

 

void OnTriggerEnter(Collider other)

{

if(other.tag == "Player")

{

//충돌한 상대 스크립트 불러오기

PlayerController playercontroller = other.GetComponent<PlayerController>();

 

//상대 스크립트 가져오기 성공하면

if(playercontroller !=null)

{

//상대스크립트의 Die메서드 실행시켜 겜오버 만들기

playercontroller.Die();

}

 

}

}

 

이렇게 해준다.

 

 

OnTriggerEnter(Collider other) 에서 인자(argument) other는 충돌한 상대방의 게임오브젝트중

콜라이더 컴포넌트이다.

 

if(other.tag == "Player") 미리 플레이어의 태그를 만들어둔걸 확인한다. 상대 오브젝트의 태그가

플레이어 이면 실행한다

 

나머지는 코드내용 그대로 이다.

 

if(playercontroller !=null) 은 가져온 스크립트가 널이 아닐때 즉 있을때 실행하는 것이다.

이것은 충돌한 상대방 겜오브젴이 PlayerController 컴포넌트를 가지고 있지 않은 경우를 대비한 것이다.

만약 없다면 PlayerController playercontroller = other.GetComponent<PlayerController>();

여기서 playercontrollernull값이 할당된다.

null은 변수에 어떠한 참조도 할당되지 못한 상태를 나타내는 값이다.


이제 드래그드롭으로 오브젝트에 스크립트를 적용한다.

 

<프리팹 다루기>

하이러키에 있는 불릿에다 드래그 드롭후, 이건 복제본 이므로, 인스펙터창의

프리팹의 Apply All으로 해준다. (복제본의 변경사항을 본체에 적용시키는 것임)

 

프리팹과 연동된 겜오브젴에서 Apply All버튼을 누르면 해당 게임 오브젴의 변경사항이 프리팹에 반영이된다

반대로 Revert All버튼은 겜오브젴의 변경사항이 취소된다.

이제 탄알생성기를 만들기위해 복제된 탄알오브젝트를 딜리트해준다.

 

댓글