[게임 디자인] 레이싱게임 등에서 진행거리 측정

레이싱게임에서 
코스의 형태가 불규칙하고 직선거리가 아닌 코스에서
어떤방법으로 플레이어가 코스를 얼마나 이동했는지 확인할 것인가?

실제 WRC와 같은 랠리경기에서 사용하는 체크포인트 방식을 이용하면 된다.

코스의 각 포인트에 체크포인트를 A, B, C, ... 와 같이 n개의 체크포인트를 맵에 배치하고
전체 코스의 길이를 Len이라고 했을 때
 각 체크포인트간의 Len은 n-1개의 구간으로 나뉠 수 있으며 
플레이어가 시작포인트부터 지나쳐온 체크포인트의 갯수를 pastPointCount라고 하고 
가장 최근에 지나친 체크포인트를 recentPoint라고 하자
그럼 지나쳐온 거리는 

PointToPointDistance*(pastPointCount-1)+Vector3.distance(player.Position, recentPoint.Position)

먼저 다음 체크포인트를 nextPoint라고 했을 때 남아있는 거리는 

PointToPointDistance*(n-pastPointCount-1) +Vector3.distance(Player.Position, nextPoint.Position)

포인트간의 거리가 일정하면 이 방법을 사용하면 되겠지만 아닌 경우에는 각 
포인트를 지나칠 때마다 포인트간에 이동한 거리를 하나의 변수에 누적해나간다




댓글

가장 많이 본 글