유니티

유니티 빗물 받는 르탄이 만들기 #3 비 내리기 (오브젝트 관리)

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

빗물 받는 르탄이 만들기 과정

 

목차

1.유니티 씬 설정하기

2.캐릭터 움직이기

3.비 내리기 (오브젝트 관리)

4.충돌 구현

5.UI 구성

6.게임오버 구현

 

1.Hieracrchy 패널에서 rain 생성

1-1 하이라키 패널에서 마우스 오른쪽 클릭 > 2D object > Sprites > Circle 선택

1-2 생성 후 오브젝트의 이름을 rain로 변경

1-3 오른쪽 Inspector 탭의 Sprite Renderer에서 Color를 150, 150, 255, 255로 맞추기

1-4 Position X : 0 Y : 4  Z : 0   

1-5 오른쪽 Inspector 탭 하단에 있는 Add Component에서 rigidbody 2D 선택하기

ㄴ rigidbody 2D는 오브젝트가 중력의 영향을 받게 해주는 기능이다. 

 

2.rain.cs 스크립트 생성하기

2-1 Project패널에서 create > C# script 선택

2-2 이름을 rain으로 바꾸기

2-3 rain.cs 작성하기

 

3.rain.cs

3-1 전체 코드

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class rain : MonoBehaviour

{

    int type;    //타입

    float size;  //사이즈

    int score;  //점수

    // Start is called before the first frame update

    void Start()

    {

        float x = Random.Range(-2.7f, 2.7f);

        float y = Random.Range(3.0f, 5.0f);

        transform.position = new Vector3(x, y, 0);


        //1~3까지 

        type = Random.Range(1, 5);


        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 if (type == 3)

        {

            size = 0.8f;

            score = 1;

            GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);


        }

        else

        {

            size = 1.0f;

            score = -5;

            GetComponent<SpriteRenderer>().color = new Color(255 / 255f, 0 / 255f, 0 / 255f, 255 / 255f);


        }


        transform.localScale = new Vector3(size, size, 0);

    }


    // Update is called once per frame

    void Update()

    {

        

    }

    //충돌 이벤트 처리

    void OnCollisionEnter2D(Collision2D coll)

    {

        if (coll.gameObject.tag == "ground"){

            Destroy(gameObject);

        }

        

        if(coll.gameObject.tag == "rtan"){

            gameManager.i.addScore(score);

            Destroy(gameObject);

        }

    }


}

3-2 void Start()에서 초기 위치 값을 랜덤하게 바꿔줌

float x = Random.Range(-2.7f, 2.7f);

float y = Random.Range(3.0f, 5.0f);

ㄴ Random.Range(최소값, 최대값); 최소값과 최대값 사이이의 랜덤한 수를 출력함

transform.position = new Vector3(x, y, 0); 

ㄴ 랜덤한 값을 변수로 받아 초기 값으로 셋팅해줌

 

3-3 type에 따라 형태 및 점수를 바꾸는 비를 셋팅하기

type = Random.Range(1, 5);

ㄴ 랜덤한 int값을 받음 (1~4)

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 if (type == 3){

    size = 0.8f;

    score = 1;

    GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);

}else{

    size = 1.0f;

    score = -5;

    GetComponent<SpriteRenderer>().color = new Color(255 / 255f, 0 / 255f, 0 / 255f, 255 / 255f);

}

ㄴ GetComponent<SpriteRenderer>().color를 통해 해당 컴포넌트의 spriteRenderer에 접근하여 color의 값을 변경함 색을 바꿀수 있음


transform.localScale = new Vector3(size, size, 0); 

ㄴ  transform.localScale 해당 오브젝트의 스케일에 접근하여 사이즈를 바꿔줌

3-4. 생성한 rain.cs를 rain 오브젝트에 연결한다.

 

4.rain 프리팹 생성하기

4-1 Project패널에서 create > folder 선택

4-2 폴더 이름을 perfabs으로 바꾸기

4-3 Hierarchy패널에 있는 rain 오브젝트를 perfabs폴더로 드래그 앤 드롭 하기

4-4 rain프리탭 생성 완료 후 Hierarchy패널에 있는 rain 오브젝트는 삭제

 

5.gameManager오브젝트 및 gameManager.cs생성하기

5-1 하이라키 패널에서 빈 오브젝트 선택하기

5-2 이름을 gameManager으로 바꾸기

5-3 Project패널에서 create > C# script 선택

5-4 이름을 gameManager으로 바꾸기

5-5 gameManager.cs 작성하기

 

6.gameManager.cs

6-1 전체 코드

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class gameManager : MonoBehaviour

{

    public GameObject rain;

  

    void Start()

    {

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

    }


    void Update()

    {


    }


    void makeRain()

    {

        Instantiate(rain);

    }

 

}

 

 

6-2 public gameObject rain;

ㄴ public을 사용하면 외부에서 접근이 가능하다

ㄴ gameObject을 사용하여 만든 rain 프리팹을 연결한다.

 

6-3 비를 만드는 함수 생성

void makeRain(){

    Instantiate(rain);

}

ㄴ Instantiate()함수를 사용하여 오브젝트를 생성한다.

 

6-4 함수를 반복하여 실행하기

 void Start(){

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

 } 

ㄴ InvokeRepeating(함수명, 지연시간, 반복주기);

ㄴ 함수를 지연시간초 후 부터 반복주기 간격으로 반복한다.

ㄴ 이를 통해서 비를 계속 내리게 할 수 있다.

 

6-5 생성한 gameManager.cs를 gameManager오브젝트에 연결한다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0