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(); }
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(); }
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); } }
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(); }