Unity 기초

르탄이 빗방울 게임 - 빗방울 충돌

맛밤도토리 2023. 12. 27. 12:02

★ 학습 목표 ★

1. 빗방울 Sprite 를 만든다.

2. 빗방울에 중력 기능을 만들어 바닥에 추락시킨다.

3. 빗방울에 충돌 기능을 추가하여 바닥에 빗방울이 닿았을 때, 빗방울은 사라지게 구현한다.

 

 

 

1. 빗방울 만들기

 : Hierarchy → GameObject → 2D Object → Circle 만들기 → 파일명 (rain)

 

 

 

2. 빗방울에 중력 기능 만들기

 : 위에서 만든 rain 파일의 Inspector 를 보면 Add Component 가 있을 것이다.

   Add Component 는 유니티에서 제공하는 여러가지 기능들을 Inspector 에 추가 할 수 있는 기능이다.

 

  Add Component → Physcis 2D → Rigidbody 2D 를 추가

※ RigidBody 가 중력 기능으로 물체를 위에서 아래로 떨어뜨리는 기능이다.

 

 

 

3. 빗방울에 충돌 기능 만들기

 : 빗방울에 충돌 기능을 만들어 주는 이유는 빗방울이 바닥에 닿았을 때 사라지도록 만들기 위함이다.

 

1) 빗방울에 충돌 기능 추가

 : 빗방울 (rain 파일) 에 충돌 기능을 추가한다.

 

Add Component → Physcis 2D → Circle Collider 2D 추가

 

충돌 기능을 추가하면 Scene 화면에서 빗방울 표면에 초록색 테두리가 추가 된다.초록색 테두리는 충돌 반경을 표시하는 것으로 Radius 값이 클수록 충돌 반경이 넓어진다.Radius 값 설정은 Inspector 에서 Circle Collider 2D 를 확인하면 설정 할 수 있다.

  빗방울 충돌 범위 확인 빗방울 충돌 범위 값 조정

 

 

2) 바닥에 충돌 기능 추가

 : 바닥 (ground 파일) 에 충돌 기능을 추가한다.

 

Add Component → Physicis 2D → Box Collider 2D 추가

 

Think! 구현 시나리오 생각해보기
1. rain (빗방울) 이 땅에 충돌했을 때 rain 은 사라져야 한다.
2. rain (빗방울) 이 르탄이와 충돌 했을 때 rain 은 사라지면서 점수를 획득해야 한다.

 

 

3) ground (바닥) 에 Tag 달아주기

 :  ground Inspector → Tag 에 Add Tag 로 새 이름을 생성 → 생성한 이름으로 Tag 변경

 

 

4) 충돌 시 빗방울 제거 Script 추가

 : 먼저 Project 에 rain Script 를 생성해준다.

 

< 충돌 시 빗방울 제거 코드 >

void OnCollisionEnter2D (Collision2D coll)
{
    if (coll.gameObject.tag == "ground")
    {
        Debug.Log("땅이다!");
        Destroy(gameObject);
    }
}

[설명]
  void OnCollisionEnter2D (Collision2D coll)  
: Collision2D coll 과 충돌을 한다.
  이 때, Collision2D coll 에는 rain 과 충돌할 상대 변수를 추가한다.

  if (coll.gameObject.tag == "ground")  
: 만약 coll 로 충돌하는 gameObject 의 tag 가 ground 라면

  Debug.Log("땅이다!");  

: Console 창에 "땅이다!" 라는 로그를 저장한다.

  Destroy(gameObject);  

: rain 오브젝트를 제거한다.