Пример #1
0
    //Comprueba si el coche está yendo marcha atrás, y establece el punto al que se ha de colocar al jugador en caso de que vuelque.
    public void UpdateRaceCarState(PlayerInfo player, SetupPlayer setupPlayer)
    {
        Vector3 carPos = player.transform.position;
        Vector3 carFwd = player.transform.forward;

        int     segIdx;
        float   carDist;
        Vector3 carProj;

        float minArcL =
            this.m_CircuitController.ComputeClosestPointArcLength(carPos, out segIdx, out carProj, out carDist);

        //Se actualizan los datos de recuperación de choques del jugador
        setupPlayer.CmdChangeLastSafePosition(carProj);
        setupPlayer.CmdChangeCrashRecoverForward(m_CircuitController.GetSegment(segIdx));

        //Comprobación de si va hacia atrás (según el ángulo entre el forward del coche y la dirección del circuito)
        float ang            = Vector3.Angle(m_CircuitController.GetSegment(segIdx), carFwd);
        bool  goingBackwards = ang > goingBackwardsThreshold;

        if (goingBackwards != player.goingBackwards)
        {
            setupPlayer.CmdChangeGoingBackwards(goingBackwards);
        }
    }
Пример #2
0
    /// <summary>
    /// Called before start, setup the events from the networkplayer here, as NetworkStart is called before regular Start.
    /// Hook up all the RPC event the shoot system needs
    /// </summary>
    void Awake()
    {
        np = GetComponent <NetworkedPlayer>();
        np.NetworkStartEvent += NetworkStart;
        np.ShootEvent        += RPCShoot;
        np.SwitchWeaponEvent += RPCSwitchWeapon;

        setupPlayer = GetComponent <SetupPlayer>();
    }
Пример #3
0
    /// <summary>
    /// Called before start, setup the events from the networkplayer here, as NetworkStart is called before regular Start.
    /// Hook up all the RPC events the health system needs
    /// </summary>
    void Awake()
    {
        np = GetComponent <NetworkedPlayer>();
        np.NetworkStartEvent += NetworkStart;
        np.DieEvent          += RPCDie;
        np.TakeDamageEvent   += RPCTakeDamage;

        setupPlayer = GetComponent <SetupPlayer>();
    }
Пример #4
0
    /* OnPlayerMessage(SetupPlayer player, string message): recibe el player y el mensaje, lo muestra de colores distintos según sea el local o no.
     */
    private void OnPlayerMessage(SetupPlayer player, string message)
    {
        string prettyMessage = player.isLocalPlayer ?
                               $"<color=red>{player.m_PlayerInfo.Name}: </color> {message}" :
                               $"<color=blue>{player.m_PlayerInfo.Name}: </color> {message}";

        AppendMessage(prettyMessage);

        //Debug.Log(message);
    }
Пример #5
0
    /* OnSend(): envía el mensaje si tiene contenido, pasándolo al servidor mediante un Command. Reinicia el valor de la variable chatMessage
     */
    public void OnSend()
    {
        if (chatMessage.text.Trim() == "")
        {
            return;
        }

        SetupPlayer player = NetworkClient.connection.identity.GetComponent <SetupPlayer>();

        player.CmdSend(chatMessage.text.Trim());
        chatMessage.text = "";
    }
Пример #6
0
    private void Awake()
    {
        setupPlayer          = GetComponent <SetupPlayer>();
        playerInfo           = GetComponent <PlayerInfo>();
        playerController     = GetComponent <PlayerController>();
        mirrorManager        = GetComponent <MirrorManager>();
        checkPointController = GetComponent <CheckpointController>();


        //Si esto da problemas, llevarlo al Start
        //polePositionManager = FindObjectOfType<PolePositionManager>();
        //networkController = FindObjectOfType<NetworkController>();
        //UIManager = FindObjectOfType<UIManager>();



        print("ScriptManager SETUP");
    }
Пример #7
0
    //Se ha implementado un sistema de checkpoints para asegurar que las vueltas al circuito se realizan correctamente
    //Cuando un jugador local toca un checkpoint, se activa el siguiente, hasta llegar a la meta.
    //Cuando el jugador ha pasado por todos los checkpoints y toca la meta se contabiliza una vuelta
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player" && other.GetComponent <SetupPlayer>().isLocalPlayer)
        {
            PlayerInfo  playerInfo  = other.GetComponent <PlayerInfo>();
            SetupPlayer setupPlayer = other.GetComponent <SetupPlayer>();
            RaceTimer   raceTimer   = other.GetComponent <RaceTimer>();

            if (isGoal)
            {
                setupPlayer.CmdChangeCurrentLap(playerInfo.CurrentLap + 1);
                raceTimer.ResetLapTime();
            }

            nextCheckpoint.gameObject.SetActive(true);
            gameObject.SetActive(false);
        }
    }