Unity 3d如何在蹦床上停止弹跳时重置计数器



我一周前开始使用unity和C#进行编码,所以如果这是一个愚蠢的问题,请原谅我。

我制作了一个统一的蹦床,玩家跳到上面,它用简单的if语句和一个计数整数把玩家弹起来,每次都弹得更高。

我的playerController脚本是在统一检查器中设置的。蹦床按计划运行,运行良好。

然而,我希望球员在离开蹦床并触地后能重新设置他们的动量。

目前,在离开蹦床并回到蹦床上后,它们的弹跳高度与离开蹦床时一样高。因此,需要重置计数整数。

我想通过对球员的简单检查来做到这一点;被接地";函数,如果为true,则将蹦床跳跃计数重置为0。

但这不起作用。我不知道为什么。对我来说,这似乎是应该的。isgrounded正在评估为true;否则如果(playerFP.groundCheck==true(";未激活。

这是我的代码:

public class Trampoline : MonoBehaviour
{
public PlayerMovement1stPerson playerFP;
[SerializeField] int jumpCount = 0;
private void OnTriggerEnter(Collider collision) 
{ 
if (jumpCount == 0 && collision.gameObject.tag == "Player" )
{
Debug.Log("Bounce 1 activated");
playerFP.velocity.y = 5;
jumpCount ++;
}
else if (jumpCount == 1 && collision.gameObject.tag == "Player")
{
playerFP.velocity.y = 10;
jumpCount ++;
}

else if (jumpCount == 2 && collision.gameObject.tag == "Player")
{
playerFP.velocity.y = 15;
jumpCount ++;
}
else if (jumpCount >= 3 && collision.gameObject.tag == "Player")
{
Debug.Log("Max Bounce");
playerFP.velocity.y = 15;
}

else if (playerFP.groundCheck == true)
{
Debug.Log("Bounces reset");
jumpCount = 0;
}
}
}

如果有任何提示,我将不胜感激。

您的弹跳(和地面检查代码(在蹦床的OnTriggerEnter方法中运行。这意味着只有当玩家进入蹦床的触发器时才会进行检查,而不是当玩家降落在任何地面上时。

将if检查移到OnTriggerEnter方法之外。蹦床脚本中的Update()方法可以工作,但最干净的实现是将弹跳信息存储在玩家中,而不是每个蹦床实例中。(这也允许玩家在多个蹦床上弹跳,而不会失去它们之间的高度(

相关内容

  • 没有找到相关文章

最新更新