/// <summary>
        /// Place a gameobject on the road at marker 0 looking at marker 1
        /// </summary>
        private void AutoPlaceGameObject()
        {
            if (!editor.extension.roadSettings.autoPlaceGameObject)
            {
                return;
            }

            if (editor.extension.roadSettings.placementGameObject == null)
            {
                Debug.LogError("No GameObject specified");
                return;
            }

            ERRoadNetwork erRoadNetwork = new ERRoadNetwork();
            ERRoad        erRoad        = erRoadNetwork.GetRoadByGameObject(editor.extension.roadSettings.road);

            if (erRoad == null)
            {
                Debug.LogError("No road gameobject specified");
                return;
            }

            if (erRoad.GetMarkerCount() < 2)
            {
                Debug.LogError("At least 2 markers required");
                return;
            }

            GameObject gameObject = editor.extension.roadSettings.placementGameObject;

            // get marker with index 0 and 1
            Vector3 positionA = erRoad.GetMarkerPosition(0);
            Vector3 positionB = erRoad.GetMarkerPosition(1);

            Bounds prefabBounds = BoundsUtils.GetPrefabBounds(gameObject);

            // position at marker position
            gameObject.transform.position = positionA;

            // look at 2nd marker
            gameObject.transform.LookAt(positionB);
        }
예제 #2
0
    /// <summary>
    /// Methode zum Platzieren des Autos am Anfang.
    /// </summary>
    private void PlaceCameraCar()
    {
        // Das Auto auf die rechte erste Spur platzieren
        ERRoad  firstRoad            = network.GetRoads().First();
        Vector3 firstSplineRightSide = firstRoad.GetSplinePointsRightSide()[0];
        Vector3 firstMarker          = firstRoad.GetMarkerPosition(0);
        Vector3 rightMiddleLane      = Vector3.zero;

        // Das Position je nach Anzahl der Spuren interpolieren
        switch (this.numberOfTracks)
        {
        case 8:
            rightMiddleLane = Vector3.Slerp(firstMarker, firstSplineRightSide, 0.85f);
            break;

        case 6:
            rightMiddleLane = Vector3.Slerp(firstMarker, firstSplineRightSide, 0.825f);
            break;

        case 4:
            rightMiddleLane = Vector3.Slerp(firstMarker, firstSplineRightSide, 0.75f);
            break;

        case 2:
        default:
            rightMiddleLane = Vector3.Slerp(firstMarker, firstSplineRightSide, 0.5f);
            break;
        }

        // Das Auto an die richtige Positions etzen
        cameraCar.gameObject.transform.position = rightMiddleLane;
        cameraCar.gameObject.transform.rotation = Quaternion.identity;

        // Ist platziert setzen
        isPlaced = true;
    }