티스토리 뷰

오늘은 Unity에서 collision 이벤트를 다뤄볼 예정이다.

본격적인 내용에 앞서 충돌이벤트를 왜 배워야 하는지 알아보겠다

 

기본적으로 게임속 함수의 진행방향은 기본적으로 다음과 같다

1) 조건2) 반응 

특정 조건이 만족되었을때, 정해진 반응을 만들어 내는것!

 

조건에는

1) 게임 외적인 조건 ex) 플레이어의 조작

2) 게임 내적인 조건 ex) 충돌, 위치, 특정 변수 값 등

 

이렇게 두 가지가 있는데, 충돌은 게임의 내적인 조건은 만들때 많이 사용된다.

예를들어 다음과 같은 게임속 상황을 구현하고자 한다.

  • 플레이어의 케릭터가 총알에 맞았을때, 플레이어의 체력을 데미지만큼 감소시킴
  • 플레이어의 케릭터가 어떤 구역에 진입하면, 다음 단계로 화면 전환

이때, 앞에있는 조건 즉 플레이어가 총알에 맞거나 혹은 적을 때렸을때, 어떤 특정구역에 진입했을때 정해진 반응을 만들어 내기 위해 충돌(collision)의 개념을 활용 할 수 있다.

 

일단 충돌이라는 것을 실현하기 위해서는 다음과 같은 조건을 만족해야 한다.

1. 충돌시키려는 두개의 game object중 하나에는 반드시  Collider와 rigidbody 라는 components가 있어야 한다.

2. 나머지 한개의 game object는 반드시 Collider를 가지고 있어야 한다.

GameObject(A) GameObject(B) 충돌인식(사건발생인식) 물리적충돌(멈춰섬)
Collider(O)/rigidbody(X) Collider(O)/rigidbody(X) No No
Collider(X)/rigidbody(O) Collider(X)/rigidbody(O) No No
Collider(O)/rigidbody(O) Collider(O)/rigidbody(O) Yes Yes
Collider(O)/rigidbody(O) Collider(O)/rigidbody(X) Yes Yes
Collider(O)/rigidbody(X) Collider(O)/rigidbody(O) Yes Yes
Collider(O)/rigidbody(O) Collider(O) & OnTrigger Yes No

트리거를 키면, 충돌은 인식하지만 이동에 방해를 받거나 하지 않는다. (물체를 통과함)

 

​이제 충돌을 인식한 시점에서 어떤 함수(반응)를 실행해 보자!!

 

코딩내용 

1. OnTrigger 상태에서 어떤 물체와 출돌 했을때

2. 만약 충돌한 물체의 tag이름이 "food"이라면

3. hp를 10%만큼 회복하고

4. "싸구려 커피를 마신다"라는 문구를 debug창에 띄우고

5. 충돌한 그 물체를 파괴한다

public class EmployeeControl : MonoBehaviour
    private void OnTriggerEnter2D(Collider2D collision) 
    // trigger 상태에서 충돌이 일어 났을때 아래의 코드를 수행한다.
    {
        if(collision.CompareTag ("food") == true)
        // 만약, 충돌한 물체의 tag가 "food"라면 
        {
            info.hp += info.hp * 0.1f;
            Debug.Log("싸구려 커피를 마신다");
            Destroy(collision.gameObject);
            // 파괴한다(부딪힌.게임오브젝트를)
        }       
    }

끝.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
250x250