Почему прыжок работает неправильно?

Рейтинг: 0Ответов: 1Опубликовано: 25.01.2023

Хотел сделать прыжок в Unity2d, что только не пробывал,делал его через rb.velocity по итогу обьект просто не прыгал. Помогите исправить!!! `public class PlayerJump : MonoBehaviour {

public float JumpForce;
private bool isGround;
Rigidbody2D rb;







public void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

public void OnJump()
{

    if (isGround == true)
        rb.velocity = Vector2.up * JumpForce;


}

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Platform")
    {
        isGround = true;
        
    }

}
private void OnCollisionExit2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Platform")
    {
        isGround = false;
    }

}

Ответы

▲ 0Принят

Точно не могу сказать в чем проблема, поэтому приведу все варианты возникновения

  1. Функция OnJump ни к чему не привязана. То есть она просто не вызывается
  2. На платформе не висит тэг "Platform", из-за этого isGround всегда false
  3. На платформе должен быть collider2d и на игроке должен быть collider2d и rigidbody2d
  4. Также возможно стоит попробовать velocity заменить на addforce: _rb.AddForce(Vector2.up * JumpForce);
    Ну а если ничего не помогло, то вот пост, где подробно рассказано о движении: Правильная реализация передвижения персонажа