Jump not working in my Player Movement Script
So This was all working perfectly the last time I checked, and I don't have a clue what I changed, and I don't think it was anything directly linked to the script. Also I'm brand new to programming, so please explain in simple terms. Thanks so much in advance, here is my code.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public CharacterController controller;
public float speed = 12f;
public float gravity = -9.81f;
public float jumpHeight = 3f; //FIRST PERSON MOVEMENT in Unity - FPS Controller 22:20 https://www.youtube.com/watch?v=_QajrabyTJc
public Transform groundCheck;
public float groundDistance = 0.4f;
public LayerMask groundMask;
Vector3 velocity;
bool isGrounded;
// Update is called once per frame
void Update()
{
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
if(isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
if(Input.GetButtonDown("Jump") && isGrounded)
{
velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
}
Answer by HyperNovaDev · Nov 11, 2021 at 10:40 AM
Solved:
The GameObject that detects the ground "GroundCheck" was too high up in the Player body, and wasn't detecting the ground. Silly me. If anyone else is having this issue here are a few things to check: first of all, what my issue was ^^ 1. if you are detecting the ground using a tag, make sure the whole environment has the tag applied:
Check script for missing operators or misswritten code (obviously)
Check if you are using the new or old input system (Main Window (unity) > Edit > Project Settings > Player > Active Input Handling (near the bottom)) and adapt code or settings accordingly
Restart Unity, This works more often than you think!