- 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
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