【发布时间】:2021-01-22 15:18:19
【问题描述】:
我尝试制作一个简单的跳转缓冲区和 Coyote 计时器。 如您所见,有时玩家会进行二段跳,但前提是跳转按钮的点击速度非常快。
正如你所看到的here>,它只发生了几次。
[Header("Player Accesiblility")]
public float hangTime = 1.5f;
[SerializeField]
private float hangCounter;
[SerializeField]
private float jumpTimer;
public float jumpDelay = 0.25f;
private void FixedUpdate()
{
if (jumpTimer > Time.time && coll.onGround)
{
Jump(Vector2.up, false);
}
}
Void update(){
if (coll.onGround) //Coyote Time for Jump
{
hangCounter = hangTime;
}
if (Input.GetButtonDown("Jump")) //Jump Function
{
anim.SetTrigger("jump");
jumpTimer = Time.time + jumpDelay;
if (!coll.onGround && hangCounter > 0)
{
Jump(Vector2.up, false);
hangCounter = 0;
}
if (coll.onWall && !coll.onGround)
{
WallJump();
}
}
}
private void Jump(Vector2 dir, bool wall)
{
rb.velocity = new Vector2(rb.velocity.x, 0);
rb.velocity += dir * jumpForce;
jumpTimer = 0f;
hangCounter = 0;
}
我们将不胜感激,感谢您的宝贵时间。
【问题讨论】:
-
这很可能是因为你在
Update而不是FixedUpdate中做物理。阅读this to know more -
@Mateusz 谢谢我会试试看
-
当您接受答案时,我们知道问题已成功处理。如有必要,没有什么能阻止您自己回答(或者您可以鼓励 Mateusz 扩展他们的评论)。我们不编辑标题。
标签: c# unity3d rigid-bodies