unity3d - Unity Player 穿过物体
问题描述
玩家和物体都有碰撞体和刚体,物体的位置和旋转锁定,玩家只有旋转锁定。当玩家走到街区时,玩家会穿过街区,尽管它们确实会产生一些阻力。要移动玩家我设置刚体的速度,并在 FixedUpdate 中执行此操作。我不知道为什么会这样,有什么想法吗?
代码的主要部分是:(
rigidBody.velocity = new Vector3(direction.x, rigidBody.velocity.y + (-Gravity * Time.deltaTime), direction.z);
方向由 WASD 键确定,我使用自己的重力)
解决方案
首先,您不需要将速度乘以 time.DeltaTime,因为您是在 FixedUpdate() 方法中移动对象;它使用固定的时间间隔,因为物理引擎不与常规游戏引擎同步运行。此外,两个物体不需要刚体就可以相互碰撞。我建议在设置中查看您的碰撞矩阵并验证您需要碰撞的所有内容都已正确检查。正如其他人所说,检查刚体上的运动学。
使用自己的重力工作的最后一个建议。不要改变游戏引擎的实际重力值。通常建议您使用乘数变量并将其应用于已由物理引擎设置的恒定重力。如果您正在完全编辑重力,则可以考虑使用角色控制器。
推荐阅读
- batch-file - 使用“VirtualBox Host-Only”从批处理脚本中获取机器的 IP 地址
- javascript - Vuex 错误 当使用 settimout 将突变提交到操作中时,不要在突变处理程序之外改变 vuex 存储状态
- java - 如何从集合中返回对象?
- java - 使用 EasyMock 进行 Java 测试
- asp.net-mvc - 使用 ADFS 成功登录后,如何将重定向 URL 设置为特定域?
- oracle - 如何将 ODI 配置为自动增加行以进行 IKM 增量更新
- ruby-on-rails - 基于 Rails 中的多个标准的自定义排名
- css - CSS 位置:sticky 表现得像固定(在 w3.css 模式中)
- netsuite - 在新窗口中打开 URL netsuite suitescript 2..0
- javascript - 如何仅在移动设备上获取幻灯片?