Unity | 유니티/Unity 미니 게임

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

maintain_H 2023. 4. 22. 17:16
반응형

 지난 번에 벌레 오브젝트까지 만들었으니 이제 벌레 스크립트를 작성한다.

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] 미니 게임 만들기 | 벌레 잡기

오늘은 처음으로 미니 게임을 포스팅 하려고 한다! 간단한 게임인데 처음 만들 때는 헷갈렸던 게임이다. 벌레 잡기 게임! [ 프로젝트 만들기 ] 2D로 만들 것이기 때문에 2D 프로젝트를 하나 만들어

maintaining.tistory.com

 

[ 벌레 스크립트 ]

 이제 벌레 스크립트를 필요에 맞게 수정한다.

일단 벌레는 일자로 움직이면 재미없으니 이리저리 움직이게 설정하고,

클릭했을 때 사라지게만 만들면 된다.

 

 

먼저 벌레가 움직이게 만든다.

float speed = 2f;

void Start()
{

}

void Update()
{
    // 벌레 움직임
    transform.position += transform.up * speed * Time.deltaTime;
}

 

 벌레의 속도는 2로 정했다. 내가 플레이했을 때 적당한 난이도의 속도였다.

transform.up은 vector3 (0, 1, 0)이다. 위로 올라가는 것이다.

transform.forward가 아닌 up을 사용한 이유는

나는 벌레의 머리가 위쪽에 있다고 설정했기 때문이다.

transfrom.forward는 vector3 (0, 0, 1)이다. 3D에서 Z 값이 앞이기 때문일 것이다. (아마)

 

 

 벌레가 일자로 움직이면 재미 없으니까 이제 벌레의 방향을 바꾸도록 설정할 것이다.

void ChangeDirection()
{
    float angle = 0.0f;

    // 0 ~ 2까지 랜덤으로 숫자 뽑기.
    int random = Random.Range(0, 3);

    // 나온 숫자에 따른 각도 변화
    switch (random)
    {
        case 0:
            angle = 45;
            break;
        case 1:
            angle = 0;
            break;
        case 2:
            angle = -45;
            break;
    }

    // Rotation(x, y, z ) 설정
    transform.Rotate(0.0f, 0.0f, angle);
}

 

 

 벌레가 움직이는 방향을 바꾸기 위한 함수이다.

이렇게만 쓰고 Update()에 넣는다면. 벌레는 1프레임마다 방향을 바꾸는 대참사가 일어난다.

 

그래서 이제 일정 시간마다 반복하도록 설정할 생각이다.

void Start()
{
    InvokeRepeating("ChangeDirection", 0.5f, 0.5f);
}

 

 

벌레가 생겼을 때 ChangeDirection이 발동하도록 Strat에 넣어줬다.

InvokeRepeating("실행할 기능", 시작 시간, 반복 시간)이다.

즉, 벌레가 생겼을 때, ChangeDirection을 0.5초후에 실행하고, 0.5초마다 반복해서 실행한다는 뜻이다.

 

또, 벌레를 잡지 못하고 화면에서는 사라지도록 한다.

화면에는 보이지 않지만, 계속 벌레가 남아있다면 나중되면 엄청난 오브젝트들이 있어서 

성능에 영향을 줄 수 있기 때문에 사라지도록 해야 한다.

이걸 구현하는 것도 한 줄이면 된다.

 

OnBecameInvisible()

 Ctrl + Shift + M 을 눌러 OnBecameInvisible()을 만들어준다.

private void OnBecameInvisible()
{
    Destroy(gameObject);
}

 

그리고 Destroy(gameObject)를 적어주면 화면에서 사라지면 오브젝트도 삭제된다.

 

 

 

이제 마우스로 클릭하면 사라지게 하는 코드만 만들면 벌레는 끝이다!

 

OnMouseDown()

Ctrl + Shift + M을 눌러 OnMouseDown()을 만들어준다.

private void OnMouseDown()
{
    Destroy(gameObject);
}

그리고 Destroy(gameObject)를 써주면 끝!

 

[ 실행 화면 ]

 

실행화면

 실행하면 이렇게 벌레가 방향 바꿔 가면서 움직이고, 클릭하면 사라진다!

 

 

 이번 글은 벌레 오브젝트를 만드는 걸 써봤다. 

 

 벌레가 한 마리만 있으면 재미 없으니까

다음 글에서는 여러 마리를 생성할 수 있도록 BugMaker를 만들고

시간 초와 잡은 마리를 기록하는 Score를 구현할 생각이다.

반응형