Я пытался добавить функцию прыжка в игру, чтобы у персонажа была анимация прыжка и использовать функцию 'solidbody.AddForce', чтобы фактически заставить его прыгать. Чтобы персонаж вернулся в исходное положение, оннужно столкнуться с чем-либо вокруг, чтобы превратить bool 'isJumping' в ложное, что делает персонаж снова бездействующим. Однако я заметил, что будет такой сбой, когда анимация ходьбы персонажа будет зацикливаться при приземлении. Позже я увидел, что BoxCollider не двигался вверх вместе с персонажем, поэтому невозможно было вызвать каждое событие на основе столкновения.
Сначала я попытался связать BoxCollider с .AddForce (Player.BoxCollider.AddForce ()),но безрезультатно. Я также попытался выключить BoxCollider и снова включить его, но этот метод также не сработал.
Вот код команды Jumping:
if (Input.GetKeyDown(KeyCode.Space) && isJumping == false)
{
isJumping = true;
thePlayer.GetComponent<Animator>().Play("Jump");
rb.AddForce(new Vector3(0, 4, 0), ForceMode.Impulse);
rb.AddForce(new Vector3(0, -4, 0), ForceMode.Impulse);
}
И этокод для любого вида коллизий:
void OnCollisionEnter(Collision col)
{
isJumping = false;
}
Я ожидаю, что триггер isJumping будет считаться ложным.