我正在尝试在我的游戏中添加跳转功能,而if语句的第三部分会影响跳转的高度,因此请确保您跳转到下面。就像我放2而不是1.001f一样,它会跳得很高,但是如果是1.1,它几乎不会跳。另外,1.001似乎根本不起作用。
public float jumpForce = 300f;
此代码没有跳转
if (Input.GetKey("space") && rb.position.y < 1.001f)
{
rb.AddForce(0, jumpForce * Time.deltaTime, 0, ForceMode.VelocityChange);
}
这段代码有点跳跃
if (Input.GetKey("space") && rb.position.y < 1.1f)
{
rb.AddForce(0, jumpForce * Time.deltaTime, 0, ForceMode.VelocityChange);
}
这段代码跳得很高
if (Input.GetKey("space") && rb.position.y < 2f)
{
rb.AddForce(0, jumpForce * Time.deltaTime, 0, ForceMode.VelocityChange);
}
答案 0 :(得分:0)
就像评论中提到的那样,您的阈值越高,在达到阈值高度之前执行该行的频率就越多=>施加力的频率就会越高。
为避免这种情况,您应该只执行一次跳转,例如代替GetKeyDown
并添加一个固定的力,而不是像{p>那样使用Time.deltaTime
if(Input.GetKeyDown(KeyCode.Space) && rb.position.y < 1.001f)
{
rb.AddForce(0, jumpForce, 0, ForceMode.VelocityChange);
}