- Home /
How to fix a infinity jump?
How can i stop the infinity jump in my script? Here is
public class PlayerMovement : MonoBehaviour
{
private Joystick joystick;
private Joybutton joybutton;
private CharacterController controller;
private Vector3 playerVelocity;
private bool groundedPlayer;
public float playerSpeed = 5.0f;
public float jumpHeight = 1.0f;
private float gravityValue = -9.81;
private void Start()
{
controller = gameObject.GetComponent<CharacterController>();
joystick = FindObjectOfType<Joystick>();
joybutton = FindObjectOfType<Joybutton>();
}
void Update()
{
groundedPlayer = controller.isGrounded;
if (groundedPlayer && playerVelocity.y < 0)
{
playerVelocity.y = 0f;
}
Vector3 move = new Vector3(joystick.Horizontal , 0, joystick.Vertical);
controller.Move(move * Time.deltaTime * playerSpeed);
if (move != Vector3.zero)
{
gameObject.transform.forward = move;
}
if (joybutton.Pressed && groundedPlayer)
{
playerVelocity.y += Mathf.Sqrt(jumpHeight * -3.0f * gravityValue);
}
playerVelocity.y += gravityValue * Time.deltaTime;
controller.Move(playerVelocity * Time.deltaTime);
}
}
Answer by BarelyUsedDesert · Oct 14, 2020 at 07:27 PM
Do you mean that you want to prevent the player from jumping mid-air? So, completely out of my mind, if I were you, @SherqPl , I would add this to my code:
void OnCollisionEnter (Collision col)
{
if(col.gameObject.tag == "Ground")
{
groundedPlayer = true;
}
}
and change this...
if (joybutton.Pressed && groundedPlayer)
{
playerVelocity.y += Mathf.Sqrt(jumpHeight * -3.0f * gravityValue);
}
to this:
if (joybutton.Pressed && groundedPlayer)
{
playerVelocity.y += Mathf.Sqrt(jumpHeight * -3.0f * gravityValue);
groundedPlayer = false;
}
Don't forget to create a new tag called "Ground" and assigning it to your ground plane/cube etc.
I haven't tested your code out, but it worked for all my other projects, so it should work in your case too.
@SherqPl . Like @BarelyUsedDesert mentioned, one of your conditions for jumping is whether or not groundedPlayer is true or false, however you're not setting it anywhere, so follow their suggestion.
Your answer
Follow this Question
Related Questions
Let Character Controller jump. 0 Answers
Let Character Controller jump. 1 Answer
Custom Character Script Allowing Movement in the Air? 0 Answers
RigidBody Character Controller Bug 0 Answers
Jump gets disabled with courutine! 1 Answer