공부/Unity

[Unity] 좀비 서바이벌 - post processing, 좀비스폰, UI, 람다식, 싱글톤

굴러다니다니 2023. 5. 3. 16:18
728x90

Canvas 및 UI 설정

1920 1080 크기에 맞춰서 캔버스를 만들었다

ScoreText - 상단에 보이는 Score : 0

WaveText - 좌측에 보이는 Wave : 0 \nZOMBIE LEFT : 0 

AmmoDisplay : 우측 하단에 보이는 총알 UI를 나타내기 위한 빈 오브젝트

AmmoText: 우측 하단 25 / 100 총알 수

GameoverUI - 빨간색을 넣어서 화면 전체로 늘린 네모

Text - GAMEOVER 글씨

RestartBtn - Restart 버튼

 

Gameover UI를 비활성화 시켜 처음 게임을 시작할 시 보이는 UI는 위 사진과 같게 만들어줬다

 

캔버스에 들어갈 UIManager Script를 만들어 캔버스와 연결해준다

 

UI Manager는 하나만 존재할 것이므로 싱글톤으로 선언해준다

 

컴포넌트들을 가져온 뒤, 각각의 글씨를 업데이트 해주는 함수를 작성해준다.

또한 Restart button을 누를 시 다시 씬이 로드되어야 하는데, 이를 Using문을 사용하지 않고, 한줄로 작성했다

 

나와서 잘 연결시켜준다! 굿!

 

Gamemanager를 만들고, script도 만들어 연결해둔다

 

싱글톤 형태로 선언해준 뒤

 

시작해서 onDeath 이벤트에 EndGame 함수를 만들어 연결해준다

EndGame은 isGameover를 참으로 만들고, UIManager로 연결한 Gameover UI를 활성화시킨다

Add Score 매개변수로 입력한 친구를 score에 더해 UI를 업데이트 해준다

 


좀비 스폰

좀비 스폰을 위해 빈 오브젝트를 만들고 

동서남북 입구에 스폰포인트를 만들고 싶기에, position을 맞춰 빈 오브젝트를 생성해 자식 개체로 넣어줬다

 

SpawnControl에 넣어줄 script ZombieSpawner를 만들고 작성해준다

필요한 기능들이며, 위 기능을 하기 위한 변수를 선언했고

처음의 스폰 지점들을 정하기 위해 spawnPoints라는 Transform 형태를 받는 배열들은 Transform을 자식 개체수만큼 갖는다고 선언해둔다. (자식이 현재는 4개지만, 스폰포인트가 늘어나도 사용 가능)

또한 spawnPoint의 길이만큼, 즉 자식 개체수만큼 for문을 돌려서 spawnPoint의 i번째 transform을 자식의 i번째 spawnpoint의 transform 값을 받아 저장해둔다 -> 인스펙터 창에서 따로 끌어서 할당할 필요가 읎다!

Awake로 시작할 때 setup 메소드를 실행!

 

UI를 계속 값을 대입해 업데이트해주는 UpdateUI문을 작성해 Update문에 넣어주고

gamemanager가 존재하는데 죽었으면 돌아가며, 남은 좀비가 없다면 wave를 스폰하고, updateui를 계속 시켜준다

Spawn Wave는 Wave마다 좀비의 마리수가 증가하며, wave수 * 1.5f 한 정수값만큼 count를 늘려 zombie를 만든다

 

좀비를 만들기 위한 Create Zombie문에선 data와 point를 지정된 값들 중 랜덤으로 고르고, 좀비를 그 자리에 만든다.

만들어진 좀비를 랜덤 data 값으로 세팅해주고, list에 추가한다

람다식을 사용해 onDeath 이벤트에 추가해 메소드를 넣어준다. zombie를 리스트에서 지우고, 10초뒤에 없애며, 점수를 10 올리는 식이다.

 

zombie spawner에 할당해주고, 기존의 좀비를 prefab으로 만들어 prefab친구를 zombie에 넣어준다


Post processing으로 필터 넣기!

packet manager > post processing을 다운받아 준다

추가로 create > volume을 눌러 만들고, bloom과 film grain, vignette 등을 위와 같이 설정해 주는데

game Scene에서는 안바뀐다

 

main camera에서 postprocessing을 설정해주고, game뷰를 보면 바뀌어있다

 


뿌옇고 필터낀느낌!

 

+ 빼먹은 것들

scriptableObject로 설정한 zombieData를 만들어 각각 값을 만들어준다

 

이 세개를 스포너에 넣었어야 한다

 

playShooter에서 UpdateUI함수문을 비워뒀었는데 이를 채워준다! 

 

끝!

 

좀비를 쓰러뜨리면 스코어 오르고, wave도 바뀌고 총알수도 잘 적용된다!

728x90