А когда он бежит, он застревает в воздухе и может ходить по воздуху? Вот мой откровенный сценарий для прыжков, на данный момент я попробовал несколько разных техник прыжков и работал над этим более недели. Нет ничего плохого в самих анимациях, когда он бездействует, анимация воспроизводится, но коллайдер CharacterController остается на земле.
Animator anim;
public float jumpSpeed = 8.0F;
private Vector3 moveDirection = Vector3.zero;
private CharacterController _charController;
public float speed = 6.0f;
public float gravity = 10f;
private float verticalVelocity;
private float jumpForce = 5.0f;
private float gravityJump = 14.0f;
void Start()
{
_charController = GetComponent<CharacterController>();
anim = GetComponent<Animator>();
}
void Update()
{
if (_charController.isGrounded)
{
verticalVelocity = -gravityJump * Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
anim.SetTrigger("Jump");
float deltaX = Input.GetAxis("Horizontal") * speed;
float deltaZ = Input.GetAxis("Vertical") * speed;
Vector3 movement = new Vector3(deltaX, 0, deltaZ);
movement = Vector3.ClampMagnitude(movement, speed);
movement.y = gravity;
movement *= Time.deltaTime;
movement = transform.TransformDirection(movement);
_charController.Move(movement);
verticalVelocity = jumpForce;
}
}
else
{
verticalVelocity -= gravityJump * Time.deltaTime;
}
Vector3 jumpVector = new Vector3(0, verticalVelocity, 0);
_charController.Move(jumpVector * Time.deltaTime);
}
}