본문 바로가기

스파르타코딩 공부내용 정리/유니티

1주차 5강 빗방울 코딩하기

빗방울은 화면 상에서 랜덤한 위치에 놓인다.

크기는 큰 것, 중간 것, 작은 것으로 나뉜다.

바닥에 닿으면 없어지고 빗방울을 맞으면 점수가 올라간다.

빗방울에 중력을 먹여 주면 자동으로 떨어지게 된다.

rigidbody: 질량이 가진 것으로 인식

하지만 바닥에 닿아도 없어지지 않는다.

빗물이 없어지는 것은 Unity의 component settting으로 구현한다.

Collider로 설정할 수 있지만, 충돌하는 두 오브젝트 중 하나에는 rigidbody 속성이 있어야 한다.

다만, 빗물은 circle collider 2D로,

땅은 box collider 2d로 설정해야 한다.

하지만, 땅에 닿아도 없어지지 않기 때문에

없어지도록 설정한다.(시나리오 작성)

 

나와 부딪힌 상대방의 태그가 ground면 땅과 부딪힌다고 인식

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

 

Unity에 Destroy 명령어 실행하도록 하기

Destroy(gameObject);

 

물방울 요소들을 랜덤하게 띄우기!!

랜덤은 C#의 내장함수인 Random.Range(A, B)를 사용하면 된다.

 

빗방울은 크기, 색깔, 점수를 다르게 설정해야 한다.

타입별 코드 구현

if (type == 1)
{
    size = 1.2f;
    score = 3;
    GetComponent<SpriteRenderer>().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f);
}
else if (type == 2)
{
    size = 1.0f;
    score = 2;
    GetComponent<SpriteRenderer>().color = new Color(130 / 255f, 130 / 255f, 255 / 255f, 255 / 255f);
}
else
{
    size = 0.8f;
    score = 1;
    GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);
}

Start 부분을 사용한다면, 손쉽게 옵션을 구현할 수 있다.

 

현재는 한 개만 생성되는데, 비가 주루륵 내리도록 코드를 수정한다.

 

GameManager를 통해 점수 / 다시 시작 / 3번 째 다시 시작에 부스터 / 광고보기 등을 만들 수 있다.

 

빗방울 복제하기 - Prefabs

프리팹으로 언제든지 오브젝트를 찍어낼 수 있다.

빗방울을 찍어 내는 것 = Instantiate

이 역할을 gameManage가 한다.

InvokeRepeating → 반복해서 실행하는 함수

InvokeRepeating("makeRain", 0, 0.5f);

 

makeRain

void makeRain()
{
    Debug.Log("비를 내려라!");
}

 

Debug.Log 자리에 Instantiate를 한다.

Instantiate(rain);