Ejemplo n.º 1
0
    private void OnAddRoadItem(bool isFirstEnter)
    {
        if (_ignoreFirst)
        {
            _ignoreFirst = false;
            return;
        }
        RoadType type = FindSuitableItem(_lastRoadItem.Type, isFirstEnter);

        Vector3 position = GetNewRoadItemPosition(type, isFirstEnter);

        _buildState = GetBuildState(_buildState);

        RoadType prevType = _lastRoadItem.Type;

        GameObject prefab = GetPrefab(type, _buildState);

        GameObject go = (GameObject)Instantiate(prefab, position, Quaternion.identity);

        _lastRoadItem = go.GetComponent <RoadItem>();

        _lastRoadItem.SetRoadPicture(Pictures.GetSuitablePicture(type, prevType, _buildState, position, isFirstEnter));
        _lastRoadItem.SetZIndex(_zIndexCounter++);
//		_lastRoadItem.RoadPictureItem.RoadItem = _lastRoadItem;

        ++_roadCounter;

        if ((_roadCounter == 4) || ((_roadCounter - 4) % 8 == 0))
        {
            AddCoins();
        }

        _roadItems.Add(go);
    }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates a roadobject and loads in all the roadpoints
        /// </summary>
        /// <param name="tempRoad"></param>
        public void Intiate(RoadItem tempRoad)
        {
            road      = tempRoad;
            road.type = road.properties.name;

            Vector3 tempCoordinates = ConvertCoordinates.CoordConvert.WGS84toUnity(road.geometry.coordinates[0].longitude, road.geometry.coordinates[0].latitude);

            tempCoordinates.y = 45f; // raycast naar de grond om te kijken of hij er is

            transform.position = tempCoordinates;
            for (int i = 0; i < road.geometry.coordinates.Count; i++)
            {
                GameObject tempGameObject = Instantiate(roadPointObject, transform.position, transform.rotation);
                tempGameObject.transform.SetParent(this.transform);
                RoadPoint tempRoadPoint = tempGameObject.GetComponent <RoadPoint>();
                roadPoints.Add(tempRoadPoint);
                tempRoadPoint.Initiate(road.geometry.coordinates[i].longitude, road.geometry.coordinates[i].latitude);

                if (i == 0)
                {
                    BoxCollider collider = tempGameObject.AddComponent <BoxCollider>();
                    collider.isTrigger = true;
                }
            }
            // Checks if there x amount of coördinates in road to deem the road segment big enough to generate a car (it's basically a small performance tweak)
            if (road.geometry.coordinates.Count > 2)
            {
                TrafficSimulator.Instance.PlaceCar(this);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Generate the road based on ID
 /// </summary>
 /// <param name="road"></param>
 public void GenerateRoad(RoadItem road)
 {
     if (road.properties.highway != "cycleway" && road.properties.highway != "pedestrian" && road.properties.highway != "service")
     {
         GameObject temp = Instantiate(roadObject, new Vector3(0f, 0f, 0f), Quaternion.identity);
         temp.transform.SetParent(this.transform);
         temp.name = road.properties.name;
         RoadObject tempRoadObject = temp.GetComponent <RoadObject>();
         tempRoadObject.Intiate(road);
         allLoadedRoads.Add(tempRoadObject);
     }
 }
Ejemplo n.º 4
0
        private void OnCorrectBallCollision(GameObject roadItemGo, RoadItem ballRoadItem)
        {
            var index = _ballsToReach.IndexOf(ballRoadItem);

            _ballsToReachStatus[index] = true;

            var lastMissed = index > 0 && !_ballsToReachStatus[index - 1];

            _pointsPerItem = !lastMissed
                ? Math.Min(_pointsPerItem + _levelInfo.PointsIncrementPerItem.Value, _levelInfo.MaxPointsPerItem.Value)
                : _levelInfo.PointsIncrementPerItem.Value;

            _totalPoints += _pointsPerItem;

            StartCoroutine(ShowOnCollisionPoints(_pointsPerItem.ToString()));
            Destroy(roadItemGo);
        }
Ejemplo n.º 5
0
    private void Clear()
    {
        foreach (GameObject roadItemGo in _roadItems)
        {
            if (roadItemGo)
            {
                RoadItem ri = roadItemGo.GetComponent <RoadItem>();
                if (ri)
                {
                    ri.Remove();
                }
            }
        }
        _roadItems.Clear();

        foreach (CoinSensor cs in _coinObjects)
        {
            cs.Hide(false);
        }
    }
Ejemplo n.º 6
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (_isCrash)
        {
            return;
        }

        if (other.CompareTag("WallInside"))
        {
            if (!other.GetComponentInParent <RoadItem>().IsWaitToRemove)
            {
                DefsGame.CameraMovement.StopMoving();
                GameEvents.Send(OnCrash, 0f);
                Crash(CarSimulator.CurrVelocity);
            }
        }
        else

        if (other.CompareTag("WallOutside"))
        {
            if (!other.GetComponentInParent <RoadItem>().IsWaitToRemove)
            {
                DefsGame.CameraMovement.StopMoving();
                GameEvents.Send(OnCrash, 0f);
                Crash(CarSimulator.CurrVelocity);
            }
        }
        else

        if (other.CompareTag("RoadEdgeLine"))
        {
            RoadItem ri = other.gameObject.GetComponentInParent <RoadItem>();
            if (!ri.IsWaitToRemove)
            {
                int counter = ri.CrossEdgeLine();
                if (counter == 1)
                {
                    GameEvents.Send(OnAddRoadItem, true);
                }
                if (counter == 2)
                {
                    if (!DefsGame.CameraMovement.IsMovingToTarget)
                    {
                        DefsGame.CameraMovement.StartMoving();
                    }
                }
            }
        }
        else

        if (other.CompareTag("RoadEdgeLine2"))
        {
            RoadItem ri = other.gameObject.GetComponentInParent <RoadItem>();
            if (!ri.IsWaitToRemove)
            {
                int counter = ri.CrossEdgeLine();
                if (counter == 1)
                {
                    GameEvents.Send(OnAddRoadItem, false);
                }
                if (counter == 2)
                {
                    if (!DefsGame.CameraMovement.IsMovingToTarget)
                    {
                        DefsGame.CameraMovement.StartMoving();
                    }
                }
            }
        }
    }
Ejemplo n.º 7
0
    private void CreateStartRoadItems()
    {
        Clear();

        _zIndexCounter = 0;

        _buildState = BuildState.BuildFirstFloor;

        RoadType   type1;
        RoadType   type2;
        GameObject go1;
        GameObject go2;
        GameObject prefab;
        RoadItem   roadItem1;
        RoadItem   roadItem2;
        float      ran = Random.value;

        if (ran < 0.5f)
        {
            type1  = RoadType.UpToRight;
            prefab = GetPrefab(type1, _buildState);
            go1    = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
            type2  = RoadType.RightToDown;
            prefab = GetPrefab(type2, _buildState);
            go2    = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
            DefsGame.CameraMovement.SetPosition(new Vector3(0, 6f, -10f));

            roadItem1 = go1.GetComponent <RoadItem>();
            roadItem1.SetRoadPicture(Pictures.GetSuitablePicture(
                                         type1, RoadType.LeftToUp, _buildState, Vector3.zero, true));
//			roadItem1.RoadPictureItem.RoadItem = roadItem1;
        }
        else
        {
            type1  = RoadType.DownToLeft;
            prefab = GetPrefab(type1, _buildState);
            go1    = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
            type2  = RoadType.LeftToUp;
            prefab = GetPrefab(type2, _buildState);
            go2    = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
            DefsGame.CameraMovement.SetPosition(new Vector3(0, -6f, -10f));

            roadItem1 = go1.GetComponent <RoadItem>();
            roadItem1.SetRoadPicture(Pictures.GetSuitablePicture(
                                         type1, RoadType.RightToDown, _buildState, Vector3.zero, true));
//			roadItem1.RoadPictureItem.RoadItem = roadItem1;
        }
//		else
//		{
//			type1 = RoadType.RightToDown;
//			prefab = GetPrefab(type1, _buildState);
//			go1 = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
//			type2 = RoadType.DownToLeft;
//			prefab = GetPrefab(type2, _buildState);
//			go2 = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
//			DefsGame.CameraMovement.SetPosition(new Vector3(9f, 0f, -10f));
//
//			go1.GetComponent<RoadItem>().RoadPictureItem = Pictures.GetSuitablePicture(
//				type1, RoadType.RightToDown, _buildState, Vector3.zero, true);
//		}
        roadItem2 = go2.GetComponent <RoadItem>();
        roadItem2.SetRoadPicture(Pictures.GetSuitablePicture(
                                     type2, type1, _buildState, Vector3.zero, true));
//		roadItem2.RoadPictureItem.RoadItem = roadItem2;

        _roadItems.Add(go1);
        _roadItems.Add(go2);

        if (Random.value < 0.5f)
        {
            _firstRoadItemType = type1;
            _lastRoadItem      = go2.GetComponent <RoadItem>();
        }
        else
        {
            _firstRoadItemType = type2;
            _lastRoadItem      = go1.GetComponent <RoadItem>();
        }

        _roadCounter = 2;
        _ignoreFirst = true;
    }