Project/VR 기반 운전 시뮬레이션: 안전 "안전 운전만해" 프로젝트
[Part 12] 주차 성공에 대한 추가 코드
mine__ral
2022. 5. 15. 00:26
- 문제
- 다른 일반 도로, 어린이 보호 구역, 산간 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코드의 일부
- 결과
- 원하는 기능을 제대로 수행하긴 했지만, 더 좋은 방법이 있을거 같은데 알지 못하겠어서 아쉬움이 남는다.