6. Unity 엔진 기본 작동법(2)

이규성·2023년 10월 17일
0

TIL

목록 보기
7/106

10/16 Unity 기본 작동법 복습

Component

객체에 다양한 물리 법칙을 적용

ex) 비 내리기

Add Component를 통해서 다양한 물리 법칙을 적용시킬 수 있다.
Rigidbody 2d = 객체에 중력을 적용


Collider = 객체에 충돌 처리를 위한 형태를 정의

rain과 ground가 서로 충돌한다 !

계속해서 빗방울이 사라지게 해보자

rain 오브젝트가 ground, rtan 오브젝트와 충돌했을 때 사라지게 하려면 ground, rtan에 각각 name tag를 부여하여 rain이 지금 어떤 오브젝트와 충돌했고 어떤 행동을 해야할지 지정해줄 수 있다.

public class rain : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void OnCollisionEnter2D(Collision2D coll)
    {
        if (coll.gameObject.tag == "ground")
        {
            Destroy(gameObject);
        }
    }
}

OnCollisionEnter2D = Collider가 부여된 오브젝트 간의 충돌 발생시 호출된다.
Destroy = 제거한다.

빗방울의 종류를 지정하고 무작위로 출현시키기

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(3f, 5f);
    transform.position= new Vector3(x,y,0);

    type = Random.Range(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
    {
        size = 0.8f;
        score = 1;
        GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 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);
    }
}

Random.Range(x,y);= x, y 값 사이의 무작위의 값을 사용
GetComponent<SpriteRenderer>().color = 스프라이트의 컬러를 제어

type에 지정해둔 빗방울의 속성이 무작위로 생성된다.

빗방울이 연속으로 생성되게 하기

prefab = 만들어둔 오브젝트를 마치 class화 시켜서 저장하여 재사용하기 용이하게 한다.
Hierarchy 탭에 만들어둔 rain 객체를 prefab 폴터도 드래그 앤 드랍 후 기존의 rain은 삭제

gameMananer = 프로젝트의 전반적인 모든 부분을 다룰 수 있는 오브젝트
스크립트에 gameManager를 생성하면 유니티에서 자동으로 인식하여 아이콘이 바뀐다.

public class gameManager : MonoBehaviour
{
    public GameObject rain;

    // Start is called before the first frame update
    void Start()
    {
        InvokeRepeating("makeRain", 0, 0.1f);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    void makeRain()
    {
        Instantiate(rain);
    }
}

public GameObject rain; = rain 오브젝트를 gameManager에서 사용할 것이다.
InvokeRepeating("makeRain", 0, 0.1f); = ("함수 이름", 시작 시간, 반복 주기)
makeRain이라는 함수를 0초에 시작하여 0.1초 마다 반복한다.
Instantiate(rain);= preFab화 시킨 오브젝트를 복제한다.

public GameObject rain; rain이 어떤 스크립트인지 지정해준다.
preFab화 시킨 rain 오브젝트가 0.1초 마다 생성된다 !

0개의 댓글