본문 바로가기
Unity 기초

풍선을 지켜라 - 네모 박스 만들기

by 맛밤도토리 2023. 12. 29.

★ 학습 목표 ★

1. 네모 박스 중력 기능 및 충돌 기능 추가하기

2. 풍선과 실드 충돌 기능 추가하기

3. 네모 박스 랜덤으로 생성하고 무한으로 복제하기

 

 

 

1. 네모 박스 만들기

 : Hierarchy → Sprite → Square (파일명 : square) 생성

 

 

 

2. 중력 기능 및 충돌 기능 추가하기

: 네모 박스가 하늘에서 떨어지면서 풍선과 실드에 충돌했다는 것을 알아야 하기 때문에 해당 기능을 추가한다.

 

1) 중력 기능 추가하기

 : square(네모 박스) Inspector 에서 Add Component 를 이용하여 중력 기능을 추가한다.

   ※ 중력 기능 : Rigidbody 2D

 

 

2) 충돌 기능 추가하기

: square(네모 박스) 에 충돌 기능 Box Collider 2D 를 추가한다.

: balloon(풍선) 과 shield(실드) 에 충돌 기능 Circle Collider 2D 를 추가한다.

 

 

 

3. 네모 박스 랜덤으로 생성하기

Think! 구현 시나리오 생각해보기
1. GameManager 로 Instatiate로 GameObject 를 복제할 수 있다.
2. square Sprite 를 Prefab 으로 만들어 GameManager 에서 관리 할 수 있게 해야 한다.
3. Random.Range 를 void Start 에서 설정해야 한다.
4. localScale 로 네모 박스의 크기를 랜덤으로 설정해야 한다.

 

1) GameManager 만들기

: Hierarchy → Create Empty 생성 (파일명 : gameManager)

 

 

2) C# Script 만들기

 : Project → C# Script (파일명 : gameManager) 와 C# Script (파일명 : square) 를 생성

 : 생성한 gameManager Script 를 Hierarchy 에 있는 gameManager 에게 드래그하여 추가한다.

 : 생성한 square Script 를 Hierarchy 에 있는 square Sprite 에 드래그하여 추가한다.

 

 

3) 네모 박스 위치 랜덤으로 생성하기

 : 네모 박스의 위치를 랜덤으로 설정하여 생성되게 하기 위해서는 코드를 작성해야 한다.

 

[square C# Script]

 void Start( )
 {
     float x = Random.Range(-3.0f, 3.0f);
     float y = Random.Range(3.0f, 5.0f);
     transform.position = new Vector3(x, y, 0);
}

[설명]
  float x = Random.Range(-3.0f, 3.0f);  
: x의 위치를 -3 ~ 3 사이에 랜덤으로 설정한다.

  float y = Random.Range(3.0f, 5.0f);  
: y의 위치를 3 ~ 5 사이에 랜덤으로 설정한다.

  transform.position = new Vector3(x, y, 0);  
: transform 에 있는 position 의 x와 y값을 저장한다.

 

 

4) 네모 박스 크기 랜덤으로 생성하기

 : 네모 박스의 크기를 랜덤으로 설정하여 생성되게 하기 위해서는 코드를 작성해야 한다.

 

[square C# Script]

void Start( )
{
    float size = Random.Range(0.5f, 1.5f);
    transform.localScale = new Vector3(size, size, 0);
}

[설명]
  float size = Random.Range(0.5f, 1.5f);  
: 네모 박스의 size 를 0.5 ~ 1.5 사이에 랜덤으로 설정한다.

  transform.localScale = new Vector3(size, size, 0);  
: transform 에 있는 scale 의 값을 설정된 size 값으로 저장한다.

 

 

 

4. 네모 박스 GameObject 무한으로 복제하기

1) square Sprite 를 Prefab 으로 만들기

: Project → Prefab 폴더 생성 → Hierarchy 에 있는 square Sprite 를 Prefab 폴더로 이동

 

 

2) 네모 박스 무한 복제 기능 만들기

: 네모 박스를 무한으로 복제하는 기능을 만들기 위해서는 코드를 작성해야 한다.

 

[gameManager C# Script]

public GameObject square;
 
void Start ( )
{
    InvokeRepeating("makeSquare" , 0.0f , 0.5f);
}
 
void makeSquare ( )
{
    Instantiate(square);
}

[설명]
  public GameObject square;  
: square GameObject를 gameManager에서 사용하겠다고 선언한다.

  InvokeRepeating("makeSquare" , 0.0f , 0.5f);  
: makeSquare 라는 함수를 0.5초 단위로 계속해서 발생 시킨다.

  void makeSquare ( )  
: square GameObject 복제 기능을 관리하는 makeSquare 라는 함수를 만든다.

  Instantiate(square);  
: square GameObject 를 복제한다는 의미이다.