Почему прыжок работает неправильно?
Хотел сделать прыжок в 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;
}
}
Ответы (1 шт):
Автор решения: Artiom
→ Ссылка
Точно не могу сказать в чем проблема, поэтому приведу все варианты возникновения
- Функция OnJump ни к чему не привязана. То есть она просто не вызывается
- На платформе не висит тэг "Platform", из-за этого isGround всегда false
- На платформе должен быть collider2d и на игроке должен быть collider2d и rigidbody2d
- Также возможно стоит попробовать velocity заменить на addforce:
_rb.AddForce(Vector2.up * JumpForce);
Ну а если ничего не помогло, то вот пост, где подробно рассказано о движении: Правильная реализация передвижения персонажа