Unity/베어유 : 어몽어스 개발 노트

[14강] 미니게임 미션 만들기 : 쓰레기 버리기 1

서니션 2023. 1. 16. 12:00
728x90
반응형

Mission2 만들어서 겹치게 둠

 

피벗도 오른쪽 아래로 수정

 

box 콜라이더로 오른쪽 벽을 설정

이걸 복붙하고 x를 -368로 설정해서 양쪽 벽을 만들어준다

 

Create Empty로 바닥 콜라이더도 만들어준다

 

각각의 쓰레기들 이미지 넣어주고 크기도 조정해준다

 

쓰레기들을 잡아서 Rigidbody2D와 BoxColider2D를 AddComponent해주고

중력을 주기위해서 Rigidbody2D - Gravity Scale을 50으로 설정해준다

 

쓰레기마다 콜라이더 설정해주고

실행 시켜주면

물리 작용을 받는 것을 확인 가능하다!

 

Trash1~5를 캐릭터처럼 Resources에 옮겨준다

Mission1.cs를 복제해서 Mission2.cs를 만들어준다

 

쓰레기 스폰을 위한 for문 작성

// 초기화
for (int i = 0; i < trash.childCount; i++)
{
    Destroy(trash.GetChild(i).gameObject);
}
        
// 쓰레기 스폰
for (int i = 0; i < 10; i++)
{
    // 사과
    GameObject trash4 = Instantiate(Resources.Load("Trash/Trash4"), trash) as GameObject;
    trash4.GetComponent<RectTransform>().anchoredPosition =
        new Vector2(Random.Range(-180, 180), Random.Range(-180, 180));
    trash4.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180));
    
    // 캔
    GameObject trash5 = Instantiate(Resources.Load("Trash/Trash5"), trash) as GameObject;
    trash5.GetComponent<RectTransform>().anchoredPosition =
        new Vector2(Random.Range(-180, 180), Random.Range(-180, 180));
    trash5.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180));
}

for (int i = 0; i < 3; i++)
{
    // 병
    GameObject trash1 = Instantiate(Resources.Load("Trash/Trash1"), trash) as GameObject;
    trash1.GetComponent<RectTransform>().anchoredPosition =
        new Vector2(Random.Range(-180, 180), Random.Range(-180, 180));
    trash1.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180));
    
    // 생선
    GameObject trash2 = Instantiate(Resources.Load("Trash/Trash2"), trash) as GameObject;
    trash2.GetComponent<RectTransform>().anchoredPosition =
        new Vector2(Random.Range(-180, 180), Random.Range(-180, 180));
    trash2.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180));
    
    // 비닐
    GameObject trash3 = Instantiate(Resources.Load("Trash/Trash3"), trash) as GameObject;
    trash3.GetComponent<RectTransform>().anchoredPosition =
        new Vector2(Random.Range(-180, 180), Random.Range(-180, 180));
    trash3.GetComponent<RectTransform>().eulerAngles = new Vector3(0, 0, Random.Range(0, 180));
}

유니티에서 실행시켜보면 제대로 나오는 것을 확인 가능하다

조금 밑으로 삐져나와 있는데 콜라이더 조절하면 될 듯!

 


새로운 미션을 제작하고

코드를 작성하는 과정이 매우 재미있었다

나중에 혼자 게임을 만든다면 이 부분을 확실하게 활용해야겠다!

728x90
반응형