FutureCollision FutureCollisionCheck() { FutureCollision collision = new FutureCollision(); collision.isCollision = false; foreach (CarScript otherCar in cars) { if (!car.isInLeftLane && !otherCar.isInLeftLane) { if (car.PredictFuturePosition(2) == otherCar.PredictFuturePosition(2) && (car.speed > otherCar.speed)) { collision.isCollision = true; collision.carScript = otherCar; collision.collisionLocation = car.PredictFuturePosition(2); } } else if (car.isInLeftLane && otherCar.isInLeftLane) { if (car.PredictFuturePosition(2) == otherCar.PredictFuturePosition(2) && (car.rightLaneSpeed > otherCar.rightLaneSpeed)) { collision.isCollision = true; collision.carScript = otherCar; collision.collisionLocation = car.PredictFuturePosition(2); } } } return(collision); }
void CheckForCollisions() { int surroundingsCheck = CheckSurroundings(); FutureCollision futureCollision = FutureCollisionCheck(); if (futureCollision.isCollision) { pointOfCollision = futureCollision.collisionLocation; if (surroundingsCheck == 0) { car.isInLeftLane = true; } else if (surroundingsCheck == 1) { car.isInLeftLane = true; } else if (surroundingsCheck == 2) { if (car.isInLeftLane) { car.speed = futureCollision.carScript.leftLaneSpeed; } else { car.speed = futureCollision.carScript.rightLaneSpeed; } } if (surroundingsCheck == 3) { if (car.isInLeftLane) { car.speed = futureCollision.carScript.leftLaneSpeed; } else { car.speed = futureCollision.carScript.rightLaneSpeed; } } } if (!futureCollision.isCollision && surroundingsCheck == 0) { if (!car.isInLeftLane) { car.speed = car.rightLaneSpeed; } else { car.speed = car.leftLaneSpeed; } } if (showDebugs) { Debug.Log("SC: " + surroundingsCheck + ", FC: " + futureCollision.isCollision); } }