c# jumping isn't consistent, please help
hey guys i've looked through the forums and can't anything to do with the problem i'm having.
basically i've created a 3D first person game. In my original player script i used an extra collider that was a trigger to detect if my player was grounded or not but i found it wasn't working on the platforms that i made. So i started searching for alternatives and found raycasting which looked more reliable and consistent with detecting whether or not i was grounded. I included it in my script and scrapped the original grounded check code and everything was great at first, the raycasting is doing a great job detecting if i'm grounded or not both on and off my platforms but its causing my jumping to be inconsistent... and i don't know why.
I haven't changed anything besides the ground check and for some reason my character is randomly jumping twice as high as before then its all of a sudden jumping fine then jumps high again. The inconsistency is what's bugging, i don't understand why i would be doing that.
If someone could please help me that would be amazing! :)
P.S. my Player only has a RigidBody attached to not a character controller (I dunno if that helps or not)
this is my player script: (the commented out code was my original grounded check)
using UnityEngine; using System.Collections;
public class FPSController : MonoBehaviour {
 public float speed = 10f;
 public float jump;
// public bool grounded = false; protected Collider coll;
 void Start () {
     
     Cursor.lockState = CursorLockMode.Locked;
     coll = GetComponent<Collider> ();
 }
     
 public bool Grounded () {
     return Physics.Raycast (transform.position, Vector3.down, coll.bounds.extents.y + 0.1f);
 
 }
 // Update is called once per frame
 void FixedUpdate () {
     float translation = Input.GetAxis ("Vertical") * speed;
     float straffe = Input.GetAxis ("Horizontal") * speed;
     translation *= Time.deltaTime;
     straffe *= Time.deltaTime;
     transform.Translate (straffe, 0, translation);
     if (Input.GetKeyDown ("escape")) {
         Cursor.lockState = CursorLockMode.None;
     }
// if (!grounded && GetComponent().velocity.y == 0) { // grounded = true; // }
// if (Input.GetKeyDown(KeyCode.Space) && grounded == true) { // GetComponent().AddForce(transform.up*jump); // grounded = false; // }
     if (Grounded () && Input.GetKeyDown(KeyCode.Space)) {
         GetComponent<Rigidbody>().AddForce(transform.up*jump);
     }
 }
}
Your answer
 
 
             Follow this Question
Related Questions
How can I move an object in the direction another object is facing. 1 Answer
Rigidbody Stop and jump 0 Answers
Bugging ragdoll 1 Answer
make rigidbody jump and maintain velocity 1 Answer
Jump Using Raycast. 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                