Beispiel #1
0
        public RacePlayer(Ball ball)
        {
            sr = StageReferences.Active;

            lap = 1;

            ball.CanMove           = false;
            ball.CheckpointPassed += Ball_CheckpointPassed;
            ball.RespawnRequested += Ball_RespawnRequested;
            if (ball.isLocalPlayer)
            {
                ball.SwitchCamerasEvent += Ball_SwitchCameraRequest;
            }

            currentCheckpointPos = sr.checkpoints[0].transform.position;
            this.ball            = ball;

            ball.CameraCreatedEvent += (sender, e) =>
            {
                ballCamera    = e.CameraCreated2;
                oldBallCamera = e.OldCamera2;
                newBallCamera = e.NewCamera2;

                ballCamera.SetDirection(sr.checkpoints[0].transform.rotation);
            };

            checkpointTimes = new float[StageReferences.Active.checkpoints.Length];

            SetNextCheckpoint();
        }
Beispiel #2
0
        public RacePlayer(Ball ball, MatchMessenger matchMessenger, MatchPlayer associatedMatchPlayer)
        {
            sr = StageReferences.Active;

            this.matchMessenger        = matchMessenger;
            this.associatedMatchPlayer = associatedMatchPlayer;
            matchMessenger.CreateListener <CheckpointPassedMessage>(CheckpointPassedHandler);
            matchMessenger.CreateListener <RaceTimeoutMessage>(RaceTimeoutHandler);

            lap = 1;

            ball.CanMove           = false;
            ball.AutoBrake         = true;
            ball.CheckpointPassed += Ball_CheckpointPassed;
            ball.RespawnRequested += Ball_RespawnRequested;
            currentCheckpointPos   = sr.checkpoints[0].transform.position;
            this.ball              = ball;

            ball.CameraCreated += (sender, e) =>
            {
                ballCamera = e.CameraCreated;
                ballCamera.SetDirection(sr.checkpoints[0].transform.rotation);
            };

            checkpointTimes = new float[StageReferences.Active.checkpoints.Length];

            SetNextCheckpoint();
        }
Beispiel #3
0
 private void Ball_RespawnRequested(object sender, EventArgs e)
 {
     ball.transform.position = sr.checkpoints[currentCheckpointIndex].GetRespawnPoint() + Vector3.up * ball.transform.localScale.x * 0.5f;
     ball.GetComponent <Rigidbody>().velocity        = Vector3.zero;
     ball.GetComponent <Rigidbody>().angularVelocity = Vector3.zero;
     if (ballCamera != null)
     {
         ballCamera.SetDirection(sr.checkpoints[currentCheckpointIndex].transform.rotation);
     }
 }
Beispiel #4
0
        private void Ball_RespawnRequested(object sender, EventArgs e)
        {
            if (Respawned != null)
            {
                Respawned(this, EventArgs.Empty);
            }

            ball.transform.position = sr.checkpoints[currentCheckpointIndex].GetRespawnPoint() + Vector3.up * ball.transform.localScale.x * 0.5f;
            ball.GetComponent <Rigidbody>().velocity        = Vector3.zero;
            ball.GetComponent <Rigidbody>().angularVelocity = Vector3.zero;
            if (ballCamera != null)
            {
                ballCamera.SetDirection(sr.checkpoints[currentCheckpointIndex].transform.rotation);
            }

            //Time penalty
            lapTime += 5;

            //Set next target node if this is an AI ball
            TrySetAITarget();
        }