我目前正在构建一个带有可跳跃角色的小型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的价值观:
答案 0 :(得分:1)
您可以增加播放器的刚体质量,也可以在编辑/项目设置/物理中增加重力
答案 1 :(得分:1)
我不确定100%,但这可能与碰撞检测有关。尝试将设置更改为连续动态而不是离散动态。
答案 2 :(得分:1)
animator
可能是一个问题,如果动画包含对Rigidbody
的更改,那么如果您在动画中设置了“设为默认值”,它就会产生怪异的东西。
答案 3 :(得分:0)
这都是我的错,无法从您的角度进行猜测。 玩家可以跳跃的所有物品都标记有“ 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,但这引起了问题。我肯定会找到另一种方法:-)谢谢大家