- Home /
Why isn't it detecting the ground?
I want to make a Jump'N'Run. I already have implemented the movement but for some reason won't the jump work. When I was printing messages on different positions, I realised that it doesn't set onGrounded to true.
The weird thing is that the player was on the ground when the message was displayed.
How can I fix this?
Here is the Code:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
// Start is called before the first frame update
float distToGround;
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
}
public float speed = 5f;
private float jumpForce = 2f;
private Rigidbody2D rigidBody;
public Vector2 speedv = new Vector2(50, 50);
// Update is called once per frame
void Update()
{
distToGround = GetComponent<Collider2D>().bounds.extents.y;
float inputX = Input.GetAxis("Horizontal");
float lockPos = 0;
transform.rotation = Quaternion.Euler(lockPos, lockPos, lockPos);
Vector3 movementv = new Vector3(speedv.x * inputX, 0, 0);
movementv *= Time.deltaTime;
transform.Translate(movementv);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded())
{
rigidBody.velocity.Set(rigidBody.velocity.x, jumpForce);
}
}
bool isGrounded()
{
Debug.Log(Physics.Raycast(transform.position, -Vector3.up, (float)(distToGround + 0.1)));
return Physics.Raycast(transform.position, -Vector3.up, (float)(distToGround + 0.1));
}
}
Here is a link to the settings of the ground (for some reason I wasn't able to upload the screenshots): A Link to a Cloud
Answer by Hawaii_Dev · Apr 01 at 06:19 AM
You have a 2D collider attached to the ground object and your player. The raycast you are doing is for 3D space. Change Physics.Raycast to Physics2D.Raycast.
Link to Physics2D.Raycast: https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html
Thanks! It is working, but now I have a new problem. For some reason the player isn't jumping. I just used Debug.Log() to print something out in the if clause and I realised that it always detects the player being on the ground even though it isn't on the ground at the moment.
Your answer
![](https://koobas.hobune.stream/wayback/20220613054845im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Build does behave different to editor 2 Answers
Why can't I SetActive children of this canvas on Mac? 1 Answer
Imported mesh artifacts in casted shadow? 0 Answers
Why isn't the variable being assigned? 1 Answer
GameObjects are Pink 1 Answer