Unity не регистрирует столкновения игрока с "землей". Теги везде проставил, все взаимодействующие объекты имеют коллайдеры.
using UnityEngine;
public class controller : MonoBehaviour
{
public float speed = 1f;
public float JumpForce = 1000;
public bool isGrounded;
public bool isJump;
Vector2 moveVector;
Animator anim;
Rigidbody2D rb;
void Start()
{
rb = gameObject.GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
{
jump();
}
if (isJump)
{
anim.SetBool("isJump", true);
}
else
{
anim.SetBool("isJump", false);
}
}
void FixedUpdate()
{
moveVector.x = Input.GetAxis("Horizontal");
rb.MovePosition(rb.position + moveVector.x * Vector2.right * speed * Time.fixedDeltaTime);
}
void jump()
{
rb.AddForce(Vector2.up * JumpForce);
}
void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Ground")
{
isJump = false;
isGrounded = true;
Debug.Log(isGrounded);
}
}
void OnCollisionExit(Collision collision)
{
if (collision.gameObject.tag == "Ground")
{
isJump = true;
isGrounded = false;
Debug.Log(isGrounded);
}
}
}