我发现,一旦玩家撞到侧墙,也会发生这种情况。看起来,一旦您越过边缘,玩家就会碰触墙的侧面一秒钟,这会破坏其物理性能。
我在这里记录了这个问题:
这些是我的播放器设置:
我还尝试了在墙壁和blayer上添加2D物理,并将所有内容都设置为0。这确实改变了效果,但还远远不能解决...
此外,我的固定更新是我跳到哪里(从更新中捕获布尔值,以固定的方式进行物理处理:)
void FixedUpdate()
{
currentPlayerSpeed = rb.velocity.x;
if (moveLeft)
{
rb.AddForce((Vector2.left * movementSpeed * Time.deltaTime) - rb.velocity, ForceMode2D.Force);
}
if (moveRight)
{
rb.AddForce((Vector2.right * movementSpeed * Time.deltaTime) - rb.velocity, ForceMode2D.Force);
}
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;
}
if (!moveLeft && !moveRight) // if no movement input is happening
{
if (isGrounded)
{
StopVelocity();
}
}
}
答案 0 :(得分:1)
好吧,我想我想出了当您同时丢弃moveLeft
和moveRight
变量都是错误的情况时,因此您正在调用StopVelocity
并执行if语句的情况。
if (!moveLeft && !moveRight) // if no movement input is happening
{
if (isGrounded)
{
StopVelocity();
}
}
这会导致这种奇怪的行为。由于您没有跳而只摔倒isGrounded
也是正确的:)