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); }
/// <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); } }
/// <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); } }
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); }
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); } }
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(); } } } } }
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; }