Unity

Unity 중력을 이용한 충돌 체크

ITSkeleton 2015. 12. 15. 13:57
728x90
반응형

Unity 중력을 이용한 충돌체크

안녕하세요? ITSkeleton입니다.

이번 글에서는 충돌체크 및 인스턴스생성, 인스턴스 삭제 까지 해볼예정입니다.


이렇게 큐브 2개를 만들어 줍니다. Move로 적혀 있는것은 Cube이름을 바꾼것입니다~ 두개의 큐브를 1자로 내려오면 만날수 있도록 만들어 줍니다~


그다음 Move에 Rigidbody를 적용해 줍니다.

적용방법은

Add Component에 들어가시면 Physics가 보이시나요? 클릭해줍니다.

클릭하면 Rigidbody가 보이시죠? 클릭해줍니다~

그러면 Rigidbody가 적용이 완료됩니다.

그다음으로는 트리거(Trigger 적용이 필요합니다 충돌을 위해서죠~)

트리거는 큐브를 생성하면 자동으로 들어가있는 Collider에 들어 있습니다.

저 부분을 클릭해서 체크를 해줍니다.

! 주의 : 두객체가 부딪힐경우(target과 bullet의경우) 둘중 하나만 트리거를 설정 하셔야 합니다. 두개 모두 체크를 하실경우 통과를 해버리기 때문이죠!

이 부분에서 Use Gravity는 스타트 되자마자 중력을 받아 아래로 추락하게 됩니다. 중력을 적용할것이냐 적용하지 않을것이냐를 묻는 부분이지요

Is Kinematic은 오로지 스크립트로 제어를 하겟다는 겁니다.

저는 Is Kinematic을 주로 사용합니다. 중력을 시작하자마자 받게되면 문제가 많이 생기니까요~

이글은 간단하게 보여주는 식으로 Use Gravity를 체크해 줍시다!

이전 글에 올렷던 인스턴스 생성 기억하시나요?

그 글을 참고하여서 코드를 짜보겠습니다.

먼저 인스턴스 생성하는 코드입니다.

public class PlusMove : MonoBehaviour {

public GameObject move;

float time;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

time += Time.deltaTime;

if (time >= 2) {

Instantiate(move);

time=0;

}

}

}

여기서 게임오브젝트로 가져오는 것은 Move입니다.

그다음 충돌 체크를 위한 코드입니다.

public class TriggerTest : MonoBehaviour {


// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

}

void OnTriggerEnter(Collider col){

if (col.gameObject.name == "Cube") {

GameObject.Destroy(this.gameObject);

}

}

}

이코드는 Move에 적용 되어야 합니다.
이렇게 코드를 짜서 적용을 전부 시킨뒤에 실행을 누르면 위에서 약 2초마다 생성되는 Move가 아래에 있는 큐브에 부딪힐때마다 삭제되는것을 보실수 있습니다.


유튜브 영상

https://www.youtube.com/channel/UCuhamVaQCtATPaEdYX-kM5Q

728x90
반응형