시작은 0부터
8. 게임매니저로 변수 관리, 오브젝트 메쉬 색상 변경 본문
게임을 만들면서 플레이어는 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 값을 가져오고, 그 값에 따라 색상을 변경시켰다.
'Unity 학습일지' 카테고리의 다른 글
10. localPosition(상대위치), 싱글톤, 오브젝트 풀링 (0) | 2022.08.17 |
---|---|
9. RigidBody Freeze, Public 변수값 문제, 슈팅게임 완료 (0) | 2022.08.17 |
7. 프리팹 인스턴스시 부모 오브젝트 설정에서 에러가 날 때 (0) | 2022.08.15 |
6. 코루틴 문제, Instantiate 와 SetActive (0) | 2022.08.14 |
5. 코루틴(Coroutine), 자식 오브젝트 가져오기, Mathf.SmoothDampAngle (0) | 2022.08.13 |