- Home /
Car Positioning System
Hello,
I am currently developing a car racing game and here I define the positions by this script. But as soon as two or more cars are in the same position, I realized that the system is not working correctly and I get the distances of the cars to the waypoints. But I cannot order now correctly. What I want to do is, if two or more cars are in the same position in the race, I want to get "distances[]" and "carPos[]" values and read them and compare them to find the correct positions of the cars in the race. By the way, I am sorry this topic may be asked tens of times but I really couldn't find a nice solution.
public RCC_AICarController aiControllerP1;
public RCC_AICarController aiControllerP2;
public RCC_AICarController aiControllerP3;
public playerWayPointController playerWayPointCont;
public int[] carPos;
public int currentPos;
public int PlayerPosition;
public Transform[] wayPoints_Race1;
private Transform playerWayPointPos;
private Transform cpuWayPointPos;
private Transform cpu1WayPointPos;
private Transform cpu2WayPointPos;
public Transform playerTransform;
public Transform cpuTransform;
public Transform cpu1Transform;
public Transform cpu2Transform;
IEnumerator defineCarPositions()
{
while(true)
{
// GETTING CURRENT WAY POINT
playerWayPointPos = wayPoints_Race1[playerWayPointCont.currentWaypointRace1];
cpuWayPointPos = wayPoints_Race1[aiControllerP1.currentWaypoint];
cpu1WayPointPos = wayPoints_Race1[aiControllerP2.currentWaypoint];
cpu2WayPointPos = wayPoints_Race1[aiControllerP3.currentWaypoint];
// GETTING DISTANCES TO WAY POINT
distances[0] = Vector3.Distance(playerTransform.position, playerWayPointPos.position);
distances[1] = Vector3.Distance(cpuTransform.position, cpuWayPointPos.position);
distances[2] = Vector3.Distance(cpu1Transform.position, cpu1WayPointPos.position);
distances[3] = Vector3.Distance(cpu2Transform.position, cpu2WayPointPos.position);
// TOTAL WAY POINTS PASSED and TOTAL LAPS
carPos[0] = playerWayPointCont.totalWaypointPassed + playerWayPointCont.lap;
carPos[1] = aiControllerP1.totalWaypointPassed + aiControllerP1.lap;
carPos[2] = aiControllerP2.totalWaypointPassed + aiControllerP2.lap;
carPos[3] = aiControllerP3.totalWaypointPassed + aiControllerP3.lap;
PlayerPosition = playerWayPointCont.totalWaypointPassed + playerWayPointCont.lap;
Array.Sort(carPos);
int carP = Array.IndexOf(carPos, PlayerPosition);
switch (carP)
{
case 0:
currentPos = 4;
break;
case 1:
currentPos = 3;
break;
case 2:
currentPos = 2;
break;
case 3:
currentPos = 1;
break;
}
yield return null;
}
Comment