public void RemoveLane(LaneObject laneObject) { if (Lanes.Contains(laneObject)) { Lanes.Remove(laneObject); } }
private void CreateCoins() { LaneObject laneObject = TrackManager.Instance.GetRandomLane(); int targetCoinCount = Random.Range(5, 10); StartCoroutine(CreateCoinsCo(laneObject, targetCoinCount)); }
public void AddLane(LaneObject laneObject) { if (!Lanes.Contains(laneObject)) { Lanes.Add(laneObject); } }
private void JumpToLane(LaneObject laneObject) { if (isJumping) { return; } isJumping = true; transform.DOJump(new Vector3(laneObject.transform.position.x, transform.position.y, transform.position.z), 1f, 1, 0.3f) .OnComplete(() => { isJumping = false; }); Character.OnCharacterSwitchLane.Invoke(); }
private IEnumerator CreateCoinsCo(LaneObject laneObject, int targetCoinCount) { yield return(new WaitForSeconds(Random.Range(0.5f, 1.5f))); for (int i = 0; i < targetCoinCount; i++) { GameObject coinObject = LevelManager.Instance.CurrentLevel.GetRandomLevelObject(LevelObjectType.Coin); Instantiate(coinObject, laneObject.transform.position + Vector3.up, Quaternion.identity, TrackManager.Instance.GetLastTrackObject().transform); yield return(new WaitForSeconds(0.2f)); } yield return(new WaitForSeconds(0.3f)); CreatePowerUp(); yield return(null); }
public LaneObject GetClosestLane(Vector3 position) { float minDistance = Mathf.Infinity; LaneObject closestLane = null; float distance = 0; for (int i = 0; i < Lanes.Count; i++) { distance = Vector3.Distance(Lanes[i].transform.position, position); if (distance < minDistance) { minDistance = distance; closestLane = Lanes[i]; } } return(closestLane); }
public void Move(Swipe swipe, Vector2 direction) { if (!Character.IsControlable) { return; } LaneObject laneObject = CurrentLane.GetLane(swipe); switch (swipe) { case Swipe.Up: Jump(); break; case Swipe.Down: Slide(); break; case Swipe.Left: if (laneObject == null) { return; } JumpToLane(laneObject); break; case Swipe.Right: if (laneObject == null) { return; } JumpToLane(laneObject); break; default: break; } }
public void RemoveLane(LaneObject laneObject) { }
public void AddLane(LaneObject laneObject) { }
private IEnumerator CreateCoinsCo(LaneObject laneObject, int targetCoinCount) { yield return(null); }
public void addLaneObject(LaneObject laneObject) { //todo check if valid... for now this is left to bga to make sure laneObjectStore.Add(laneObject); }
//All peaks are detected - now its time to decide where these beats are going BeatMap makeBeatMap(int drift_length, int fly_length) { BeatMap beatMap = new BeatMap(settings, song_info, song_meta, songFilePath); int currLane = 0; int currLaneCount = 0; int timeAfterFly = Mathf.FloorToInt(getIndexFromTime(BGACommon.TIME_AFTER_FLY_SECTION)); int endFlyIndex = -1; for (int i = 0; i < output.peaks2.Length; i++) { float currTime = getTimeFromIndex(i); if (i == output.flySectionIndex) { LaneObject lObj1 = new LaneObject(i, currTime, -1, LANE_OBJECT_TYPE.START_FLY_TRIGGER); LaneObject lObj2 = new LaneObject(i + fly_length, getTimeFromIndex(i + fly_length), -1, LANE_OBJECT_TYPE.START_NORMAL_TRIGGER); endFlyIndex = i + drift_length; beatMap.addLaneObject(lObj1); beatMap.addLaneObject(lObj2); Debug.Log("Added the fly section triggers"); continue; } else if (output.drifts[i] > 0) { LaneObject lObj1 = new LaneObject(i, currTime, -1, LANE_OBJECT_TYPE.START_DRIFT_TRIGGER); LaneObject lObj2 = new LaneObject(i + drift_length, getTimeFromIndex(i + drift_length), -1, LANE_OBJECT_TYPE.START_NORMAL_TRIGGER); beatMap.addLaneObject(lObj1); beatMap.addLaneObject(lObj2); continue; } else if (i == endFlyIndex) //Don't spawn anything after a <fly> section so that the car can fall back to the track { endFlyIndex = -1; i += timeAfterFly; continue; } else if (output.peaks2[i] <= 0) { continue; } else if (currTime < settings.warm_up_time) //we do not spawn notes until warm up time is done. So we spawn obstacles on L and R to show the beats { int lane = (bga_random.Next(0, 2) == 1) ? 0 : 2; LaneObject lObj = new LaneObject(i, currTime, lane, LANE_OBJECT_TYPE.Obstacle); beatMap.addLaneObject(lObj); } else { //we have not spawned a beat yet, choose a random lane if (currLaneCount == 0) { currLane = bga_random.Next(0, 3); currLaneCount = 1; } else { if (bga_random.NextDouble() < BGACommon.CHANCE_TO_SWITCH_LANES) //5 % chance we stay in the same lane { currLaneCount = 1; int direction = (bga_random.Next(0, 2) == 1) ? -1 : 1; //move left or right? if on ends wrap around currLane = Math.Abs((currLane + direction) % BGACommon.NUMBER_LANES); } else { currLaneCount += 1; } int randomObstacle = bga_random.Next(0, 4); switch (randomObstacle) { case 0: break; case 1: //add an obstacle on lane n + 1 beatMap.addLaneObject(new LaneObject(i, currTime, Math.Abs((currLane + 1) % BGACommon.NUMBER_LANES), LANE_OBJECT_TYPE.Obstacle)); break; case 2: //add an obstacle on lane n - 1 beatMap.addLaneObject(new LaneObject(i, currTime, Math.Abs((currLane - 1) % BGACommon.NUMBER_LANES), LANE_OBJECT_TYPE.Obstacle)); break; case 3: //add an obstacle on lanes n - 1 and n + 1 beatMap.addLaneObject(new LaneObject(i, currTime, Math.Abs((currLane + 1) % BGACommon.NUMBER_LANES), LANE_OBJECT_TYPE.Obstacle)); beatMap.addLaneObject(new LaneObject(i, currTime, Math.Abs((currLane - 1) % BGACommon.NUMBER_LANES), LANE_OBJECT_TYPE.Obstacle)); break; default: throw new Exception("randomObstacle is an unexpected value! Expected [0, 3]; actual: " + randomObstacle); } LaneObject lObj = new LaneObject(i, currTime, currLane, LANE_OBJECT_TYPE.Beat); beatMap.addLaneObject(lObj); } } } return(beatMap); }