- 문제
- 다른 일반 도로, 어린이 보호 구역, 산간 S자 도로와 같이 끝이 있는 맵과는 다르게 주차장 맵은 주차를 성공해야만 게임이 종료된다. 이를 위해 다시한번 Collider 기능을 사용
- 해결
- Empty Object를 4개를 만들어서 아래와 같이 Box Collider 기능을 추가한다.
- 각각의 Object의 tag를 Park1, Park2, Park3, Park4로 한다.
- PlayerScore에 아래의 코드를 추가한다. 즉, 네개의 Box Collider가 감지되면 주차에 성공한 것이고 하나라도 벗어나면 주차에 실패한 것이다.
private void OnTriggerStay(Collider other)
{
switch (other.gameObject.tag)
{
case "Park1":
ParkFlag[0] = true;
break;
case "Park2":
ParkFlag[1] = true;
break;
case "Park3":
ParkFlag[2] = true;
break;
case "Park4":
ParkFlag[3] = true;
break;
// 선을 밟을 경우, 무조건 주차 실패
case "Line":
isParkSuccess = false;
break;
}
// If all flag is True => Parking is Success
isParkSuccess = ParkFlag[0] && ParkFlag[1] && ParkFlag[2] && ParkFlag[3];
//Debug.Log($"isParkSuccess {isParkSuccess}");
if (isParkSuccess)
Managers.Score.ScoreOut(Define.ScoreOut.Clear);
}
private void OnTriggerExit(Collider other)
{
switch (other.gameObject.tag)
{
case "Park1":
ParkFlag[0] = false;
break;
case "Park2":
ParkFlag[1] = false;
break;
case "Park3":
ParkFlag[2] = false;
break;
case "Park4":
ParkFlag[3] = false;
break;
}
}
PlayerScore코드의 일부
- 결과
- 원하는 기능을 제대로 수행하긴 했지만, 더 좋은 방법이 있을거 같은데 알지 못하겠어서 아쉬움이 남는다.
'Project > VR 기반 운전 시뮬레이션: 안전 "안전 운전만해" 프로젝트' 카테고리의 다른 글
[Part 14] 3D 게임과 2D 화면 합치기: Canvas의 Render Mode (0) | 2022.05.15 |
---|---|
[Part 13] VR 기기(Oculus Quest2)와 Unity 연동 (0) | 2022.05.15 |
[Part 11] 채점 알고리즘 & Trigger, Collsion (0) | 2022.05.14 |
[Part 10] 타이머 설정 Timer & 카운트다운 CountDown: 유니티 이벤트 사용 (0) | 2022.05.14 |
[Part 9] 사용자 게임 Scene에 놓기 (0) | 2022.05.14 |