▼ 수정할 부분
- InverseSphere --> SkyBox로 변경
- 게임결과를 나타내줄 오브젝트들 회전 방식 바꿔주기
- GameScene에서 결과값들 GameOverScene에 받아오기
- Continue 텍스트가 활성화 된 후 Controller의 아무 버튼이나 누르면 LobbyScene으로 돌아가기(Scene 전환)
- Score 텍스트 애니메이션 등 연출하기
▶ InverseSphere --> SkyBox로 변경
- 기존에 넣은 이미지 보다는 SkyBox가 더 화질이 좋고 더 asset이 다양하다고 판단하여 변경했다.
Window -> Rendering -> Lighting -> Environment -> Skybox Material을 원하는 Material로 바꿔준다.

▶ 오브젝트 회전 방식 바꾸기
- 기존에 Animation으로 오브젝트를 회전하던 방식이 조금 부자연스러운 것 같아서 코드로 오브젝트를 회전시키는 것으로 변경하였다.
- 각 오브젝트에 붙여둔 Animator를 제거한 후, 오브젝트들 리스트를 만들어서 foreach문을 돌며 회전시켜 주었다.
private void Update()
{
foreach (GameObject gameObject in gameResultObjects)
{
gameObject.transform.Rotate(new Vector3(0, 0.8f, 0) * 180 * Time.deltaTime);
}
}
▶ GameScene에서 결과값들 GameOverScene에 받아오기
- GameScene의 플레이한 결과값을 받아오기 위해 팀원이 만들어둔 InfoManager 스크립트에 아래와 같이 추가해주었다.
- InfoManager가 싱글톤이기 때문에 아무 곳에서나 접근이 가능하여 여기에 추가한 이유도 있다.


**kills : 처치한 적의 수
**blockedBullet : 방패로 막은 총알 수
**totalDamage : 적에게 가한 총 데미지
**itemEquiped: 얻은 웨이브 아이템 수
**score : 게임 점수
각각 항목들이 해당되는 곳에 위에 만들어준 InfoManager의 인스턴스를 활용하여 처리해주었다.
**GameMain 스크립트


**Shield 스크립트

**Reward 스크립트

**Enemy1Move 스크립트

InfoManager에 처리해준 것을 GameOverMain 스크립트에 가져와 UI로 보여지게 하였다.

▶ Continue 텍스트가 활성화 된 후 Controller의 아무 버튼이나 누르면 LobbyScene으로 돌아가기(Scene 전환)
- bool isContinue를 사용하여 Start()가 되면 false로 설정하고 contiune 텍스트가 뜬 후에 isContinue를 true로 바꾼 후,
isContinue가 true일때만 Scene전환 메서드를 호출하도록 하였다.
private bool isContinue;
void Start()
{
this.isContinue = false;
this.result.SetActive(true);
this.GameOver();
this.enemyKills_txt.text = InfoManager.Instance.kills.ToString();
this.blockedBullets_txt.text = InfoManager.Instance.blockedBullet.ToString();
this.itemEquiped_txt.text = InfoManager.Instance.itemEquiped.ToString();
this.totalDamge_txt.text = InfoManager.Instance.totalDamage.ToString();
}
private void Update()
{
foreach (GameObject gameObject in gameResultObjects)
{
gameObject.transform.Rotate(new Vector3(0, 0.8f, 0) * 180 * Time.deltaTime);
}
if (this.isContinue == true)
{
this.GoLobby();
}
}
private IEnumerator CoShowGameOver()
{
this.defeat_txt.gameObject.SetActive(true);
yield return new WaitForSeconds(1.5f);
this.score.SetActive(true);
for (int i = 0; i < InfoManager.Instance.score + 1; i += 10)
{
this.score_txt.text = i.ToString();
yield return null;
}
yield return new WaitForSeconds(0.5f);
for (int i = 0; i < gameResultLists.Length; i++)
{
this.gameResultLists[i].gameObject.SetActive(true);
yield return new WaitForSeconds(1f);
}
yield return new WaitForSeconds(1f);
this.continue_txt.gameObject.SetActive(true);
this.isContinue = true;
}
private void GoLobby()
{
if (OVRInput.Get(OVRInput.RawButton.Any))
{
InfoManager.Instance.InitGameScore();
SceneManager.LoadScene("LobbyScene");
}
}
▶ Score 텍스트 애니메이션 등 연출하기
- Score 텍스트 부분에 Scale을 변경해주는 Animation을 넣어주고

단순히 크기가 커졌다 작아졌다하는 것이 밋밋하여 점수가 0에서 부터 최종스코어까지 +10씩 빠르게 더해지도록 GameOver 정보를 보여주는 코루틴 메서드에 아래와 같이 추가해주었다.


▶ 수정한 GameOverScene 모습
- 더불어 게임결과에 대한 설명이 영어로 되어있어 이해도가 떨어질 것을 염려하여 한글로 바꿔주었다!

▶ GameClearScene
- 웨이브3까지 다 적을 처치한 후 나오는 GameClearScene도 GameOverScene과 동일하게 구성을 하되, SkyBox와 이펙트를 변경하여 연출하였다. (좀 더 희망적인 느낌!!)
▶ GameClearScene 모습

'VR 팀프로젝트 > [GroundZero] 제작 일지' 카테고리의 다른 글
GroundZero 플레이 영상 및 소감 (0) | 2024.01.23 |
---|---|
GroundZero 제작일지 - 왼손 방패 연출 수정 (0) | 2024.01.10 |
GroundZero 제작일지 - 바주카포 총 수정 (0) | 2024.01.03 |
GroundZero 제작일지 - Lobby Scene 데이터 연동 및 연출 R&D (0) | 2023.12.27 |
GroundZero 제작일지 - GameOverScene 구현 (1) | 2023.12.21 |