Tilt Ball - 4

2022. 3. 14. 14:57DIY/[완료][Unity] Tilt Ball

저번 포스팅에서는 원통과 도넛의 스케일 이슈 때문에 패턴을 하나밖에 만들지 못했다.

이번 포스팅에서는 2개의 패턴을 추가했고,

밋밋한 배경이 뭔가 허전해서 스카이박스를 넣었다.

 


아래는 이번에 추가한 Pattern2(), Pattern3()의 코드.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DonutSpawnMgr : MonoBehaviour
{
    [SerializeField] GameObject donut;
    GameManager gm;
    float DONUT_Z = 1.25f;
    float timer;

    void Start()
    {
        gm = FindObjectOfType<GameManager>();
        timer = 0f;
        SpawnObs(2);
    }

    public void Pattern1()
    {
        float lastPos = 0f;
        float lastPos2 = 0f;
        donut.SetActive(true);
        float randomAngle = Random.Range(0f, 180f);
        for (float f = 0; f < DONUT_Z * 7; f += DONUT_Z)
        {
            GameObject go = Instantiate(donut, new Vector3(0f, 0f, 80f + f), donut.transform.rotation);
            go.transform.Rotate(Vector3.forward, randomAngle + 0f);
            lastPos = go.transform.position.z;
        }
        lastPos2 = lastPos + DONUT_Z;
        for (float f = 0; f < DONUT_Z * 7; f += DONUT_Z)
        {
            GameObject go = Instantiate(donut, new Vector3(0f, 0f, lastPos2 + f), donut.transform.rotation);
            go.transform.Rotate(Vector3.forward, randomAngle + 45f);
            lastPos = go.transform.position.z;
        }
        lastPos2 = lastPos + DONUT_Z;
        for (float f = 0; f < DONUT_Z * 7; f += DONUT_Z)
        {
            GameObject go = Instantiate(donut, new Vector3(0f, 0f, lastPos2 + f), donut.transform.rotation);
            go.transform.Rotate(Vector3.forward, randomAngle + 90f);
        }
        donut.SetActive(false);
    }

    public void Pattern2()
    {
        donut.SetActive(true);
        float randomAngle = Random.Range(0f, 180f);
        for (float f = 0; f < DONUT_Z * 21; f += DONUT_Z)
        {
            GameObject go = Instantiate(donut, new Vector3(0f, 0f, 80f + f), donut.transform.rotation);
            go.transform.Rotate(Vector3.forward, randomAngle);
        }
        donut.SetActive(false);
    }

    public void Pattern3()
    {
        donut.SetActive(true);
        float randomAngle = Random.Range(0f, 180f);
        for (float f = 0; f < DONUT_Z * 21; f += DONUT_Z)
        {
            GameObject go = Instantiate(donut, new Vector3(0f, 0f, 80f + f), donut.transform.rotation);
            go.transform.Rotate(Vector3.forward, randomAngle + f * 4);
        }
        donut.SetActive(false);
    }

    public void SpawnObs(int patternNum)
    {
        if (!gm.isBallDestroy)
        {
            switch (patternNum)
            {
                case 0:
                    Pattern1();
                    break;
                case 1:
                    Pattern2();
                    break;
                case 2:
                    Pattern3();
                    break;
            }
        }
    }
    

    void Update()
    {
        timer += Time.deltaTime;

        if(timer >= 5f)
        {
            timer = 0f;
            SpawnObs(Random.Range(0, 3));
        }
    }
}

 

 


아래는 우주 배경의 스카이박스 에셋을 적용한 모습이다.

기존 스탠다드 쉐이더가 우주 배경을 반사해주는데 훨씬 느낌 있어보인다.

허접하더라도 완성이 목적이라

이 이상으로 외적인 것은 건들지 않을 예정이였는데 뜻밖의 이득이였다.


Prototype play

 

 


What to do Next

 

1. 패턴 추가

2. 도넛 리소스 추가

'DIY > [완료][Unity] Tilt Ball' 카테고리의 다른 글

[Tilt Ball] 프로파일러 사용하기  (0) 2022.06.05
[R&D][Tilt Ball] 오브젝트 조각내는 연출하기  (0) 2022.05.14
Tilt Ball - 5  (0) 2022.03.16
Tilt Ball - 2  (0) 2022.01.19
Tilt ball  (0) 2022.01.15