void Start() { if (checkpoints.Count == 0) { return; } CheckPointEvent = new CheckPointEvent(); Object[] allRacerArray = FindObjectsOfType <Object> ().Where(x => x is IRacer).ToArray(); Object[] allAgentArray = FindObjectsOfType <Object>().Where(x => x is kartAgent).ToArray(); for (int i = 0; i < allRacerArray.Length; i++) { IRacer racer = allRacerArray[i] as IRacer; m_RacerNextCheckpoints.Add(racer, checkpoints[0]); racer.DisableControl(); } for (int i = 0; i < allAgentArray.Length; i++) { var agent = allAgentArray[i] as kartAgent; if (agent != null) { CheckPointEvent.AddListener(agent.achivedCheckPoint); } } }
public void OnCheckPointEnter(CheckPointEvent cpEvent, Collider other) { if (lastCp == (checkPoints.Length - 1) && checkPoints[checkPoints.Length - 1] == cpEvent) { // This is the finish Debug.Log(Time.realtimeSinceStartup - startTime); WheelVehicle vehicle = other.GetComponentInParent <WheelVehicle>(); recorder.Stop(); recorder.Save(vehicle.name); if (checkPoints[checkPoints.Length - 1] == checkPoints[0]) { // If it's a loop start a new timer StartRace(vehicle); } } else if (checkPoints[0] == cpEvent && lastCp != 1) { // This is the start StartRace(other.GetComponentInParent <WheelVehicle>()); } else if (lastCp < checkPoints.Length && checkPoints[lastCp] == cpEvent) { // This is the next logical CP Debug.Log("CP: " + lastCp.ToString()); lastCp++; } }
void CheckPointPass(CheckPointEvent e) { if (e.isEntered) { switch (e.CharacterID) { case 1: _bPlayer1Entered = true; iChar1InCheckPoint = e.iCheckPointID; break; case 2: _bPlayer2Entered = true; iChar2InCheckPoint = e.iCheckPointID; break; case 3: _bPlayer1Entered = true; _bPlayer2Entered = true; break; } } else { switch (e.CharacterID) { case 1: _bPlayer1Entered = false; //iChar1InCheckPoint = 0; break; case 2: _bPlayer2Entered = false; //iChar2InCheckPoint = 0; break; } } }
/// <summary> /// 初期位置の更新 /// </summary> /// <param name="pos"></param> public void UpdateCheckPoint(CheckPointEvent check) { _startPos = check.transform.position; }