- Home /
Other
My Player's Jump and Gravity Speed is not the when how i want it to be
im trying to get my player's jump and gravity speed the same so my player and jump and fall at the same speed and also limit his jump height. this is the code
public class PlayerJump : MonoBehaviour {
public float jumpSpeed = 20;
public float gravity = 9.8f;
CharacterController controller;
Vector3 currentMovement;
// Use this for initialization
void Start ()
{
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update ()
{
if (!controller.isGrounded)
currentMovement -= new Vector3 (0, gravity * Time.deltaTime, 0);
else
currentMovement.y = 0;
if (!controller.isGrounded && Input.GetButtonDown ("Jump"))
currentMovement.y = jumpSpeed;
controller.Move (currentMovement * Time.deltaTime);
}
}
Answer by hexagonius · Feb 16, 2015 at 05:20 PM
You should never set the y of your movement Vector3 to 0 on a CharacterController because by the time it will leave the ground when not constantly pushed against it. Use -9.81 instead.
I don't see how you're ever going to leave the ground as your if-statement checks for the jump button and NOT grounded. Change it to
if (controller.isGrounded && Input.GetButtonDown ("Jump"))
Answer by melkorinos · Feb 16, 2015 at 05:03 PM
Well from your script , there are cases where you would multiply with deltaTime twice, eg when you are not grounded. Try removing the second deltaTime you use, the one multiplied with currentMovement and see what happens.
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
How can I activate my jump script only at my crouch animation ? 0 Answers
How do I make this jump function work? 1 Answer
Distribute terrain in zones 3 Answers