사전캠프/Unity

3주차 과제 - 해적고양이 만들기

서보훈 2024. 8. 22. 15:52

숙제 설명

LV.4에서 해적 고양이가 나오게 해볼까요?

  • 고양이와 통통한 고양이, 그리고 해적 고양이가 나오는거에요!
  • 게임 메커닉 개발을 복습하는 것으로, 게임을 더 풍성하게 만들어봅시다.

 

필수숙제

  • 해적고양이는 아래의 조건을 갖고 있습니다.
    • normalCat 보다 사이즈가 작음 scale x: 0.8, y: 0.8
    • normalCat 보다 빠르게 내려옴 -0.1f

3번째 고양이 유형인 해적고양이를 만들고, 레벨 4에 도달하면 해적고양이가 등장하도록 만들어주어야 합니다.

 

처음 주어진 패키지에 해적고양이 스프라이트가 포함되어 있습니다.

 

일반 고양이의 프리팹을 수정해서 해적 고양이를 만들어주도록 하겠습니다.

일반 고양이 프리팹을 화면으로 다시 가져온 후, Prefab - Unpack Completely 를 선택하여 오브젝트의 프리팹을 해제해 줍니다.

해제한 프리팹의 Scale의 x, y 값을 0.8로 바꿔줍니다.

여기서 크기를 변경해주면 컴포넌트로 붙어있는 Collier의 크기도 작아지면서, 자연스럽게 판정이 좁아지게 됩니다.

오브젝트의 이름도 PirateCat으로 변경해줍니다.

 

PirateCat 의 자식 오브젝트로 들어있는 Full과 Hungry의 스프라이트를 변경해줍니다.

PirateCat에 붙어있는 애니메이터 컴포넌트도 삭제해 주도록 합니다.

 

애니메이션을 새로 만들어주고, 만들어준 애니메이션을 PirateCat에 붙여줍니다.

이전에 만든 2종류의 고양이와 마찬가지로, Hungry 오브젝트의 스프라이트를 0프레임에 1번, 10프레임에 2번, 20프레임에 1번으로 만들어줍니다.

만들어준 애니메이션의 Loop time을 꼭 체크해줍니다.

 

만들어준 오브젝트를 프리팹화 시켜주고, Cat.cs를 수정해줍니다.

Start 부에서 3번타입을 추가로 만들어주고, speed와 full 을 설정해줍니다.

속도는 -1f 로 적혀있어서, 기본보다 약간 빠르게 해주기 위해 0.06으로 설정해주었고, full은 언급이 없어서 기본과 동일하게 해주었습니다.

private void Start()
{
    float x = Random.Range(-9.0f, 9.0f);
    float y = 30f;
    transform.position = new Vector2 (x, y);

    if (type == 1)
    {
        //노말
        speed = 0.05f;
        full = 5f;
    }
    else if (type == 2)
    {
        //통통한
        speed = 0.03f;
        full = 10f;
    }
    else if(type == 3)
    {
        //해적
        speed = 0.06f;
        full = 5f;
    }
}

 

스크립트를 수정한 후, pirateCat 프리팹에 붙어있는 Cat.cs컴포넌트의 type값을 3번으로 바꿔주는것을 잊지 말아야합니다.

 

GameManager를 수정해주도록 하겠습니다.

public으로 해적고양이 프리팹을 가져올 변수를 마련해주고, 4레벨 이상일때 해적고양이가 생성되도록 해줍니다.

public GameObject pirateCat;

private void MakeCat()
{
    Instantiate(normalCat);

    if (level == 1)
    {
        float p = Random.Range(0, 10);
        if (p < 2) Instantiate(normalCat);
    }
    else if (level == 2)
    {
        float p = Random.Range(0, 10);
        if (p < 5) Instantiate(normalCat);
    }
    else if (level == 3)
    {
        Instantiate(fatCat);
    }
    else if (level >= 4)
    {
        Instantiate(pirateCat);
    }
}

만약, 해적고양이와 통통한 고양이가 같이 생성되기를 원한다면 Instantiate 함수를 2번 사용하여 각각 해적, 통통한을 생성하도록 만들어줍니다.

 

GameManager.cs가 붙은 오브젝트에 해적고양이 프리팹을 지정해주면 완성입니다.