(я редактирую код СЕЙЧАС, ЭТО РАБОТАЕТ (с функцией neu jump), похоже, проблема в том, что это функция isGrouned (), но я до сих пор не знаю, почему мой персонаж не выскочил)
Персонаж застревает, когда я пытаюсь прыгнуть ближе к блоку (и движется в направлении блока).Некоторая подсказка, что может происходить и как ее решить?
ситуация:

Кажется, персонаж застревает, когда контроллер персонажаЗвезда коллайдера, уменьшающая радиус.
Информация NavMesh: Информация NavMesh 2 [
2
символьный контроллер:

Я ожидал, что персонаж достигнет вершины коробки, или, по крайней мере, он сможет подняться по этой небольшой разнице
код перехода:
public void jump()
{
if (OnSlope())
{
print("controller.height: " + controller.height);
controller.Move(Vector3.down * controller.height / 2 * slopeForce * Time.deltaTime);
}
print("key press jump");
JumpMode = true;
StartCoroutine(JumpEvent());
}
private IEnumerator JumpEvent()
{
controller.slopeLimit = 90.0f;
float timeInAir = 0.0f;
//print("IEnumerator JumpEvent");
float timePassed = 0;
while (timePassed < 1.5F)
{
float jumpForce = jumpFallOff.Evaluate(timeInAir);
controller.Move(Vector3.up * jumpForce * jumpMultiplier * Time.deltaTime);
timeInAir += Time.deltaTime;
// Code to go left here
timePassed += Time.deltaTime;
yield return null;
}
/*
do
{
float jumpForce = jumpFallOff.Evaluate(timeInAir);
controller.Move(Vector3.up * jumpForce * jumpMultiplier * Time.deltaTime);
timeInAir += Time.deltaTime;
//print("INTOWHILE JumpEvent");
//print("inside- controller.isGrounded: " + controller.isGrounded);
//print("inside-(controller.collisionFlags & CollisionFlags.Below) == 0): " + ((controller.collisionFlags & CollisionFlags.Below) == 0));//.ToString()
//print("inside-((controller.collisionFlags & CollisionFlags.Above) == 0) " + ((controller.collisionFlags & CollisionFlags.Above) == 0));
yield return null;
}
while (!controller.isGrounded);// && controller.collisionFlags != CollisionFlags.Below);// .Above); ((controller.collisionFlags & CollisionFlags.Below) == 0) && ((controller.collisionFlags & CollisionFlags.Above) == 0));//
*/
//print("outside- controller.isGrounded: " + controller.isGrounded);
//print("outside- (controller.collisionFlags & CollisionFlags.Below) == 0): " + ((controller.collisionFlags & CollisionFlags.Below) == 0));//.ToString()
//print("outside- ((controller.collisionFlags & CollisionFlags.Above) == 0) " + ((controller.collisionFlags & CollisionFlags.Above) == 0));
controller.slopeLimit = 45.0f;
JumpMode = false;
}