Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

시작은 0부터

8. 게임매니저로 변수 관리, 오브젝트 메쉬 색상 변경 본문

Unity 학습일지

8. 게임매니저로 변수 관리, 오브젝트 메쉬 색상 변경

0base 2022. 8. 16. 03:14

  게임을 만들면서 플레이어는 X축으로만 이동하고 플레이어가 Z축으로 전진하는 것이 아니라 적 오브젝트들이 -Z로 다가오는 방식으로 게임을 구현했더니, 플레이어가 '부스터'아이템을 얻었을 때 속도가 증가하는 효과를 반영하기 위해서 생성되는 모든 오브젝트들의 다가오는 속도를 증가시켰다. 

 

speed = FindObjectOfType<GameManager>().GetComponent<GameManager>().localSpeed;

GameManager라고 이름을 붙인 빈오브젝트 안에 넣어둔 게임매니저 컴포넌트 안에 있는 로컬스피드 변수를 대입한다. 이 값은 실시간으로 반영되어야하기 때문에 Update 함수에 해당 코드를 넣었다.

 

플레이어가 아이템을 얻었을 때 랜덤확률로 부스터, 공격 속도 증가, 공격력 증가를 얻을 수 있도록 만들었고, 공격속도와 공격력도 GameManager로 관리하였으며, 공격력 증가는 가시적으로 구분될 수 있게 플레이어가 발사하는 총알의 색상을 변경시켰다.

 

private void OnEnable()
    {
        damage = FindObjectOfType<GameManager>().GetComponent<GameManager>().playerDamage;
        switch(damage)
        {
            case 1:
                GetComponent<Renderer>().material.color = Color.white;
                break;
            case 2:
                GetComponent<Renderer>().material.color = Color.yellow;
                break;
            case 3:
                GetComponent<Renderer>().material.color = Color.green;
                break;
            case 4:
                GetComponent<Renderer>().material.color = Color.cyan;
                break;
            case 5:
                GetComponent<Renderer>().material.color = Color.blue;
                break;
            case 6:
                GetComponent<Renderer>().material.color = Color.magenta;
                break;
        }
    }

 총알 오브젝트가 생성될 때, 데미지값을 GameManager 내부에 있는 playerDamage 값을 가져오고, 그 값에 따라 색상을 변경시켰다.