Пример #1
0
    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);
    }
Пример #2
0
    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);
        }
    }