コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
    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++;
        }
    }
コード例 #3
0
    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;
            }
        }
    }
コード例 #4
0
 /// <summary>
 /// 初期位置の更新
 /// </summary>
 /// <param name="pos"></param>
 public void UpdateCheckPoint(CheckPointEvent check)
 {
     _startPos = check.transform.position;
 }