Итак, вот моя проблема: пытаться заставить персонажа скользить, пока я удерживаю кнопку прыжка, не касаясь земли.
Я пытался добавить силу и установить скорость напрямую,Прямо сейчас я думаю, что путь вперед - это установка скорости, но он продолжает сбрасываться в ноль, прежде чем я могу настроить свое глиссирование.
// Update is called once per frame
void FixedUpdate()
{
float move = Input.GetAxis("Horizontal");
float climb = Input.GetAxis("Vertical");
//Are we on the ground?
_grounded = Physics2D.OverlapCircle(groundCheck.position, _groundCheckRadius, groundLayer);
//Make sure we are facing the correct direction
if (move > 0 && !facingRight)
Flip();
else if (move < 0 && facingRight)
Flip();
_rigidbody.velocity = new Vector2(CalculateXSpeed(), CalculateYSpeed());
//Anaimtion stat
_animator.SetBool("IsGrounded", _grounded);
_animator.SetFloat("MoveSpeed", Mathf.Abs(move));
_animator.SetFloat("VerticalVelocity", _rigidbody.velocity.y);
}
/// <summary>
/// Calculate All the force for the final character movement
/// </summary>
/// <returns></returns>
float CalculateXSpeed()
{
float result;
if (!_grounded && Input.GetButtonDown("Jump"))
{
if (facingRight)
result = flightPower;
else
result = -flightPower;
}
else
{
result = Input.GetAxis("Horizontal") * MaxSpeed;
}
return result;
}
/// <summary>
/// Calculate All the force for the final character movement
/// </summary>
/// <returns></returns>
float CalculateYSpeed()
{
float result = _rigidbody.velocity.y;
if (Input.GetButton("Jump"))
{
if (_grounded)
{
result += jumpPower;
_grounded = false;
}
}
return result;
}
Мощность полета и максимальная скорость установлены в инспекторе, 5 и 10 соответственно.