private void Lean(float x) { if (stateManager.currentState == PlayerStateManager.PlayerState.Pushing) { if (x > .1f) { stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Right); } if (x < -.1f) { stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Left); } } else if (stateManager.currentState == PlayerStateManager.PlayerState.Primed) { if (x > .1f) { stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Right); } if (x < -.1f) { stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Left); } } }
private void Crouch() { if (jumpHeight < maxJumpHeight) { jumpHeight += Time.deltaTime * buildUpSpeed; } if (stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Airborne && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Right && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Left) { stateManager.ActiveState(PlayerStateManager.PlayerState.Primed); } }
//void update() //{ // //Shoot a raycast down from the groundcheck transform. // isGrounded = Physics.Raycast(groundCheck.position, Vector3.down, out hit, groundDistance); // print(isGrounded); // //if (isGrounded) // //{ // // // // //Store the normal of the surface we are on. // // groundNormal = hit.normal; // // // // if (playerGravity.velocity.y == -2 && stateManager.currentState != PlayerStateManager.PlayerState.Pushing && stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Grinding) // // { // // if (stateManager.doingTrick == true) //If they are doing a trick // // { // // //TODO DEATH/FAILURE/RAGDOLL METHOD HERE // // Debug.Log("The player failed to complete their trick before landing."); // // stateManager.ActiveState(PlayerStateManager.PlayerState.Ragdoll); // // death.KillPlayer(); // // death.End(); // // } // // else if (!horizontalMovement.leaning && !Input.GetKey("down")) // // stateManager.ActiveState(PlayerStateManager.PlayerState.Pushing); // // //And tell the state manager that the player is on the ground, pushing their scooter. // // } // // else if (!horizontalMovement.leaning && Input.GetKey("down") && playerGravity.velocity.y == -2 && stateManager.currentState == PlayerStateManager.PlayerState.Pushing && stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Grinding) // // { // // stateManager.ActiveState(PlayerStateManager.PlayerState.Manual); // // } // // // // if (hit.transform.tag == "Ramp") // // { // // audioSource.clip = audioManager.clips[5]; // // audioSource.Play(); // // } // //} // //else if (stateManager.currentState == PlayerStateManager.PlayerState.Grinding) // // stateManager.currentState = PlayerStateManager.PlayerState.Airborne; //} private void OnTriggerEnter(Collider other) { //print(other.tag); if (other.tag == "Mountain" || other.tag == "Ramp" || other.tag == "Untagged" && !death.dead) { isGrounded = true; if (stateManager.currentState != PlayerStateManager.PlayerState.Pushing && stateManager.currentState != PlayerStateManager.PlayerState.Lean_Left && stateManager.currentState != PlayerStateManager.PlayerState.Lean_Right && stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Left && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Right && stateManager.currentState != PlayerStateManager.PlayerState.Manual) { stateManager.ActiveState(PlayerStateManager.PlayerState.Pushing); } if (other.tag == "Ramp") { audioSource.clip = audioManager.clips[5]; audioSource.Play(); } if (jumpSuccess) { comboManager.newComboValue = 1; comboManager.AddToCombo(); jumpSuccess = false; } } if (other.tag == "Obstacle") { isOnObstacle = true; if (stateManager.currentState != PlayerStateManager.PlayerState.Pushing && stateManager.currentState != PlayerStateManager.PlayerState.Lean_Left && stateManager.currentState != PlayerStateManager.PlayerState.Lean_Right && stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Left && stateManager.currentState != PlayerStateManager.PlayerState.Primed_Right && stateManager.currentState != PlayerStateManager.PlayerState.Manual) { stateManager.ActiveState(PlayerStateManager.PlayerState.Pushing); } } if (stateManager.doingTrick == true && isGrounded) //If they are doing a trick { //TODO DEATH/FAILURE/RAGDOLL METHOD HERE Debug.Log("The player failed to complete their trick before landing."); stateManager.ActiveState(PlayerStateManager.PlayerState.Ragdoll); death.KillPlayer(); death.End(); stateManager.doingTrick = false; } }
public void Play() { movement.enabled = false; //horizontalMovement.enabled = false; if (stateManager.currentState != PlayerStateManager.PlayerState.Grinding) { stateManager.ActiveState(PlayerStateManager.PlayerState.Grinding); } speed = movement.speed / railBraking; float magnitude = (rail.nodes[currentSegment + 1].position - rail.nodes[currentSegment].position).magnitude; float normalizedSpeed = (Time.deltaTime * 1 / magnitude) * speed; transition += normalizedSpeed; if (transition > 1) { transition = 0; currentSegment++; if (currentSegment == rail.nodes.Length - 1) { isCompleted = true; movement.enabled = true; //horizontalMovement.enabled = true; stateManager.ActiveState(PlayerStateManager.PlayerState.Airborne); transform.rotation = initialRotation; start = false; currentSegment = 0; comboManager.newComboValue = 1; comboManager.AddToCombo(); return; } } else if (transition < 0) { transition = 1; currentSegment--; } transform.position = rail.PositionOnRail(currentSegment, transition, mode); //transform.rotation = rail.Orientation(currentSegment, transition); }
private void CheckPlayerState() { //This is used to see if the player is currently jumping or falling. //It is not currently feasible to set the jumping state in Jump.cs due to our ground detection. //If velocity, the player should be jumping. if (!stateManager.doingTrick && (velocity.y != -2 && stateManager.currentState == PlayerStateManager.PlayerState.Primed) || (velocity.y != -2 && stateManager.currentState == PlayerStateManager.PlayerState.Pushing)) { //print("Oi"); stateManager.ActiveState(PlayerStateManager.PlayerState.Airborne); } }
private void Lean(float x) { if (stateManager.currentState != PlayerStateManager.PlayerState.Airborne && x != 0) { if (stateManager.currentState == PlayerStateManager.PlayerState.Pushing) { if (x > 0) { leaning = true; stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Right); } if (x < 0) { leaning = true; stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Left); } } else if (stateManager.currentState == PlayerStateManager.PlayerState.Primed) { if (x > 0) { leaning = true; stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Right); } if (x < 0) { leaning = true; stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Left); } } } else if (x == 0) { leaning = false; } }
private void OnCollisionEnter(Collision other) { //print(groundCheck.isOnObstacle + " " + dead + " " + canDie + " " + other.gameObject.name + " " + other.gameObject.tag); if (other.gameObject.CompareTag("Obstacle") && (!groundCheck.isOnObstacle || obsInFront) && !dead && canDie) { Debug.Log("The player hit an obstacle."); Rigidbody rb = other.gameObject.GetComponent <Rigidbody>(); if (rb != null) { rb.useGravity = true; rb.isKinematic = false; } stateManager.ActiveState(PlayerStateManager.PlayerState.Ragdoll); KillPlayer(); //GetComponentInChildren<TrailRenderer>().enabled = false; End(); } }
//A method that activates a given trick public void TrickStep(TrickStep trickStep) { currentTrickStep = trickStep; if (currentTrickStep.state != PlayerStateManager.PlayerState.Idle && !doingTrick) { //Change the player's state to that trick. stateManager.ActiveState(currentTrickStep.state); doingTrick = true; } if (currentTrickStep.comboMultiplier != 0) { //Add to the player's multiplier. comboManager.newComboValue = currentTrickStep.comboMultiplier; comboManager.AddToCombo(); } }
//private void OnCollisionEnter(Collision collision) //{ // if (collision.gameObject.tag == "Mountain") // { // isGrounded = true; // stateManager.ActiveState(PlayerStateManager.PlayerState.Pushing); // } //} //private void OnCollisionExit(Collision collision) //{ // isGrounded = false; // stateManager.ActiveState(PlayerStateManager.PlayerState.Airborne); //} void Rotate() { if (stateManager.currentState != PlayerStateManager.PlayerState.Airborne && groundCheck.isGrounded) { rotationSpeed = 75; if (Input.GetKey(KeyCode.D) && !yMaxReached) { transform.Rotate(0, Time.deltaTime * rotationSpeed, 0); yMinReached = false; if (transform.eulerAngles.y > 45 && transform.eulerAngles.y < 50) { yMaxReached = true; } if (stateManager.currentState == PlayerStateManager.PlayerState.Pushing || stateManager.currentState == PlayerStateManager.PlayerState.Lean_Left) { stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Right); } else if (stateManager.currentState == PlayerStateManager.PlayerState.Primed || stateManager.currentState == PlayerStateManager.PlayerState.Primed_Left) { stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Right); } } else if (Input.GetKey(KeyCode.A) && !yMinReached) { transform.Rotate(0, -Time.deltaTime * rotationSpeed, 0); yMaxReached = false; if (transform.eulerAngles.y < 315 && transform.eulerAngles.y > 310) { yMinReached = true; } if (stateManager.currentState == PlayerStateManager.PlayerState.Pushing || stateManager.currentState == PlayerStateManager.PlayerState.Lean_Right) { stateManager.ActiveState(PlayerStateManager.PlayerState.Lean_Left); } else if (stateManager.currentState == PlayerStateManager.PlayerState.Primed || stateManager.currentState == PlayerStateManager.PlayerState.Primed_Right) { stateManager.ActiveState(PlayerStateManager.PlayerState.Primed_Left); } } else { rb.angularVelocity = new Vector3(0, 0, 0); if (stateManager.currentState != PlayerStateManager.PlayerState.Primed && stateManager.currentState != PlayerStateManager.PlayerState.Manual) { stateManager.ActiveState(PlayerStateManager.PlayerState.Pushing); } } } else { rotationSpeed = 25; if (Input.GetKey(KeyCode.D) && !yMaxReached) { transform.Rotate(0, Time.deltaTime * rotationSpeed, 0); yMinReached = false; if (transform.eulerAngles.y > 45 && transform.eulerAngles.y < 50) { yMaxReached = true; } } else if (Input.GetKey(KeyCode.A) && !yMinReached) { transform.Rotate(0, -Time.deltaTime * rotationSpeed, 0); yMaxReached = false; if (transform.eulerAngles.y < 315 && transform.eulerAngles.y > 310) { yMinReached = true; } } else { rb.angularVelocity = new Vector3(0, 0, 0); } } }