这是通过在不同情况下对物体施加向下的加速度来实现的。在物体向上的速度大于0并且按着跳跃键向下不断加更小的重力加速度。在物体下落时也就时向下的速度小于0时不断加更大的重力加速度。
private void BetterJump()
{
if (player_2d.velocity.y < 0)
{
player_2d.velocity += Vector2.up * Physics2D.gravity.y * (falling_gravity - 1) * Time.deltaTime;
}
else if (player_2d.velocity.y > 0 && !Input.GetKey(KeyCode.K))
{
player_2d.velocity += Vector2.up * Physics2D.gravity.y * (not_loosened_gravity - 1) * Time.deltaTime;
}
}
只需要在update方法中调用写好的这个方法。其中两个变量在类下面声明就好,数值可以在挂这个脚本的物体上手动调整。变量上面的时c#中的特性,作用是让变量有滑动条和序列化。
[Range(0f, 5f)]
[SerializeField]
private float falling_gravity;//下落时重力倍数(自行调整)
[Range(0f, 5f)]
[SerializeField]
private float not_loosened_gravity;//没松开时的重力倍数(自行调整)