Unity | 유니티/Unity 미니 게임

[Unity] 미니 게임 만들기 (3) | 벌레 잡기

maintain_H 2023. 4. 22. 18:09
반응형

 이전 글에서는 벌레가 움직이고, 클릭하면 사라지는 걸 구현했다.

https://maintaining.tistory.com/entry/Unity-%EB%AF%B8%EB%8B%88-%EA%B2%8C%EC%9E%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-2-%EB%B2%8C%EB%A0%88-%EC%9E%A1%EA%B8%B0

 

[Unity] 미니 게임 만들기 (2) | 벌레 잡기

지난 번에 벌레 오브젝트까지 만들었으니 이제 벌레 스크립트를 작성한다. https://maintaining.tistory.com/entry/Unity-%EB%AF%B8%EB%8B%88-%EA%B2%8C%EC%9E%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%B2%8C%EB%A0%88-%EC%9E%A1%EA%B8%B0 [Unity]

maintaining.tistory.com

 

 

 이제 벌레를 생성하는 BugMaker와, 잡은 벌레를 기록하는 Score를 구현할 예정이다.

 

[ 벌레 생성하기 | BugMaker ]

 먼저 빈 오브젝트를 생성하고, 스크립트를 붙여준다.

 오브젝트 이름을 BugMaker라고 정하고, BugMaker 스크립트를 붙여준다.

 

 

 

그리고 Bug 오브젝트를 프리팹으로 만들어준다.

 

 하이라키에 있는 Bug 오브젝트를 프로젝트로 드래그하면 된다! 그리고 하이라키에 있는 Bug는 삭제해준다.

 

 

 이제 BugMaker 스크립트를 수정해준다.

BugMaker는 일정 시간마다 Bug를 생성하는 기능을 한다.

 

 

 BugPrefa위치를 무작위로 생성하는 함수를 작성한다.

 void BugSpawn()
{
    Vector3 pos = new Vector3();
	
    // 화면 높이
    float screenHalfHeight = Camera.main.orthographicSize;
    // 화면 넓이
    float screenHalfWidth = screenHalfHeight * Camera.main.aspect;
    float angle = 0;
	
    // 생성할 벌레 수만큼 반복
    for (int i = 0; i < bugCnt; i++)
    {
        // 생성 위치 정하기
        switch (i % 4)
        {
            // 왼쪽
            case 0:
                pos.x = -screenHalfWidth;
                pos.y = Random.Range(-screenHalfHeight, screenHalfHeight);
                angle = -90f;
                break;
            // 오른쪽
            case 1:
                pos.x = screenHalfWidth;
                pos.y = Random.Range(-screenHalfHeight, screenHalfHeight);
                angle = 90f;
                break;
            // 위쪽
            case 2:
                pos.x = Random.Range(-screenHalfWidth, screenHalfWidth);
                pos.y = screenHalfHeight;
                angle = 180f;
                break;
            // 아래쪽
            case 3:
                pos.x = Random.Range(-screenHalfWidth, screenHalfWidth);
                pos.y = screenHalfHeight;
                angle = 0f;
                break;
        }
        
        // bugPrefab 생성
        GameObject go = Instantiate(bugPrefab);

        // bugPrefab 위치와 바라보는 방향
        go.transform.position = pos;
        go.transform.Rotate(0, 0, angle);
    }
}

 

그리고 bugPrab을 설정해주고, InvokeRepeating을 사용해서 일정 시간마다 벌레를 생성하도록 한다.

public GameObject bugPrefab;

// 벌레 리스폰 시간
float spawnTime = 5f;

// 한 번에 만드는 벌레 수
int bugCnt = 10;

// Start is called before the first frame update
void Start()
{
	// 0초 후 시작, 5초마다 반복
    InvokeRepeating("BugSpawn", 0f, spawnTime);
}

 그리고 아까 생성했던 프리팹을 드래그해서 넣어주면 끝이다!

 

[ 실행 화면 ]

 어.. 진짜 바선생들이 기어다니는 거 같긴 한데..

아무튼 벌레 클릭하면 사라지고, 일정 시간마다 벌레들이 생성된다!

 

 

 여기까지가 벌레잡기 끝!

다음에 제한시간과 점수까지 구현하는 걸 올려보도록 하겠습니다

반응형