my player does the animation on the floor as if he had to jump but walking makes the animation stop I think it's the groundcheck that does not work. I have bad English it was in the translator.

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour
{

[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
public LayerMask groundLayer;

private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;

// Use this for initialization
void Awake()
{
    anim = GetComponent<Animator>();
    rb2d = GetComponent<Rigidbody2D>();
    groundCheck = transform.Find("groundCheck");
}

// Update is called once per frame
void Update()
{
    grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground")); ;

    if (Input.GetButtonDown("Jump") && grounded)
    {
        jump = true;
    }
}

void FixedUpdate()
{
    float h = Input.GetAxis("Horizontal");

    anim.SetFloat("Speed", Mathf.Abs(h));

    if (h * rb2d.velocity.x < maxSpeed)
        rb2d.AddForce(Vector2.right * h * moveForce);

    if (Mathf.Abs(rb2d.velocity.x) > maxSpeed)
        rb2d.velocity = new Vector2(Mathf.Sign(rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

    if (h > 0 && !facingRight)
        Flip();
    else if (h < 0 && facingRight)
        Flip();

    if (jump)
    {
        anim.SetTrigger("Jump");
        rb2d.AddForce(new Vector2(0f, jumpForce));
        jump = false;
    }
}

void Flip()
{
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}

}

Good day @odesconhecidocanal0 !

You can use the trigger detection to know if the player is on the ground or jumping. Making the collider little down offset

102329-unsdasdtitled.jpg

Using OnTriggerStay while walking, to know the player is on the ground.

Using OnTriggerExit if starts to jump

Using OnTriggerEnter when touches the ground again

Using them wisely you should have your solution

If helped, mark the answer as good :smiley:

Bye :smiley: :smiley:

void OnTriggerStay(Collider other)
{
if (other.attachedRigidbody)
other.attachedRigidbody.AddForce(Vector3.up * 10);
}
void OnTriggerExit(Collider other)
{
// Destroy everything that leaves the trigger
Destroy(other.gameObject);
}
void OnTriggerEnter(Collider other) {
Destroy(other.gameObject);
}