unity3d - unity - 与刚体错误一起跳跃
问题描述
我试图用刚体跳跃,有时我的跳跃很低,就像它堆叠在什么东西上,有时又很高。为什么会改变?
谢谢你的回答
我的代码:
private void Update() {
if (Input.GetKeyDown(KeyCode.Space) && isGrounded) Jump();
}
private void FixedUpdate()
{
isGrounded = Physics.CheckSphere(groundCheck.position, 0.2f, groundMask);
}
private void Jump()
{
rigidbody.AddForce(Vector3.up * 20, ForceMode.VelocityChange);
isGrounded = false;
}
解决方案
首先,根据此处Jump()
的 Unity 文档,任何关于刚体的物理计算(例如您的 中的计算)都应始终在函数内部完成。以默认的固定速率每 0.02 秒运行一次,而每帧运行一次,这对于运行它的每台机器都会有所不同。FixedUpdate()
FixedUpdate()
Update()
我没有为您重新发明轮子,而是在 Unity 论坛上进行了搜索并找到了以下代码,这应该可以帮助您进一步了解您的问题。我在那里使用了代码并针对您的场景进行了编辑。
private bool shouldJump = false;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
shouldJump = true;
}
}
void FixedUpdate()
{
// Check for jump
if (isGrounded && shouldJump)
{
shouldJump = false;
rigidbody.AddForce(Vector3.up * 20.0f, ForceMode.VelocityChange);
}
}
推荐阅读
- java - Java中断/停止定时器
- power-automate - 如何在 MS Flow 中处理 HTTP 302 重定向
- c# - 如何设置音频源以根据字符距离从低音量到高音量收听音频?
- dart - 如何删除 scoped_model 状态?
- python - 为什么我不断收到 bin/sh: 1 :: not found
- python - 可以通过 MySQL Workbench 但不能通过 python 连接到 AWS RDS
- javascript - 客户端上的 encodeURIComponent 和服务器上的 decodeURIComponent
- jquery - 根据鼠标悬停时子div的属性设置父div的背景图片
- reactjs - Textarea autoheight 在 flex 中不起作用
- java - Netbeans IDE 用户 - 在 Windows 10 上安装 Netbeans 8.0.2 时出现问题