Unity:玩家跳得很好,但下落非常慢
Unity: Player jumps fine, but falls extremly slow
我目前正在构建一个带有可以跳跃角色的小型 2D 平台游戏。这是跳跃的样子(FixedUpdate):
if (jump)
{
if (isGrounded)
{
isGrounded = false;
rb.AddForce(Vector2.up * (jumpHeight * counterForJumpHeight) * Time.deltaTime, ForceMode2D.Impulse);
jump = false;
anim.SetBool("bool_anim_isJumping", true);
}
if (timer != null)
timer.Stop();
counterForJumpHeight = jumpMulitMin;
jumpAlreadCharging = false;
}
看起来非常适合每次跳起然后落下。
然而:当玩家没有跳跃就直接掉落(就像从悬崖上掉下来或什么东西)时,看起来他有一片叶子的重量。极慢地航行到地面。一点都不加速。就像慢动作一样坠落。我当然可以提高重力,但这也会影响我跳跃后的下落,让他看起来像一块石头。好像下降速度加快了什么的。但这没有意义。他在跳跃后摔倒和他从什么东西上摔下来应该看起来一样,对吧?但事实并非如此。
这些是我对 RB 的价值观:
您可以增加玩家的刚体质量,或者增加 edit/projectsettings/ 物理中的重力
我不是 100% 确定,但这可能与碰撞检测有关。尝试将设置更改为连续动态而不是离散。
这可能是 animator
的问题,如果动画包含对 Rigidbody
的更改,如果您在动画中设置了设为默认值,它会产生奇怪的东西。
都是我的错,站在你的角度根本猜不出来。
玩家可以跳的所有东西都被标记为 "can_jump"。
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "can_jump") // detect collision with ground game object
{
isGrounded = true;
deacceleratePerFrame = 1.5f;
anim.SetBool("bool_anim_isJumping", false);
}
}
这包括所有边。删除它意味着我不能再跳 atm,但这导致了问题。我肯定会找到另一种方法 :-) 谢谢大家
我目前正在构建一个带有可以跳跃角色的小型 2D 平台游戏。这是跳跃的样子(FixedUpdate):
if (jump)
{
if (isGrounded)
{
isGrounded = false;
rb.AddForce(Vector2.up * (jumpHeight * counterForJumpHeight) * Time.deltaTime, ForceMode2D.Impulse);
jump = false;
anim.SetBool("bool_anim_isJumping", true);
}
if (timer != null)
timer.Stop();
counterForJumpHeight = jumpMulitMin;
jumpAlreadCharging = false;
}
看起来非常适合每次跳起然后落下。
然而:当玩家没有跳跃就直接掉落(就像从悬崖上掉下来或什么东西)时,看起来他有一片叶子的重量。极慢地航行到地面。一点都不加速。就像慢动作一样坠落。我当然可以提高重力,但这也会影响我跳跃后的下落,让他看起来像一块石头。好像下降速度加快了什么的。但这没有意义。他在跳跃后摔倒和他从什么东西上摔下来应该看起来一样,对吧?但事实并非如此。
这些是我对 RB 的价值观:
您可以增加玩家的刚体质量,或者增加 edit/projectsettings/ 物理中的重力
我不是 100% 确定,但这可能与碰撞检测有关。尝试将设置更改为连续动态而不是离散。
这可能是 animator
的问题,如果动画包含对 Rigidbody
的更改,如果您在动画中设置了设为默认值,它会产生奇怪的东西。
都是我的错,站在你的角度根本猜不出来。 玩家可以跳的所有东西都被标记为 "can_jump"。
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "can_jump") // detect collision with ground game object
{
isGrounded = true;
deacceleratePerFrame = 1.5f;
anim.SetBool("bool_anim_isJumping", false);
}
}
这包括所有边。删除它意味着我不能再跳 atm,但这导致了问题。我肯定会找到另一种方法 :-) 谢谢大家