我认为主要问题是Rigidbody
's的操纵velocity
。我会尝试以下方法来解决问题。
IncreaseBallVelocity
重新设计您的代码以确保Rigidbody
在FixedUpdate
. 检查是否没有其他操作Transform.position
。
- 尝试通过使用
AddForce
或类似的方法直接替换设置速度,以便物理引擎有更高的机会计算所有依赖项。
- 如果有更多与物理计算相关的项目(主要玩家角色,...),请确保它们的代码也在 FixedUpdate 中运行。
我偶然发现的另一点是非常缩放的网格。具有GameObject
比例 <= 0.01 或 >= 100 肯定会对物理计算产生负面影响。根据其中一位大师的文档和这个 Unity 论坛条目,您应该避免 Transform.scale 值!= 1
还是不开心?好的,那么下一个测试是从高速开始但没有加速度。在这个阶段,我们想知道问题是由高速本身还是加速度造成的。知道物理引擎开始失败的速度值会很有趣 - 请发布它们以便我们可以比较它们。
编辑:要调查的更多事情
6.7 m/sec 听起来并不多,所以我想有一个特殊原因或多种原因导致事情出错。
- 您的最大允许时间步长是否足够高?对于测试,我建议 5 到 10x
Fixed Timestep
。请注意,这可能会降低帧速率,但可以稍后修复。
- 在编辑器播放器和 Android 上运行游戏有什么区别吗?
- 您是否注意到由于
0.01
FixedTimestep
. 这表明物理引擎可能有问题。
- 是不是有静态对撞机(具有对撞机但没有 collider 的对象
Rigidbody
)被移动或以其他方式操纵?这将导致在 PhysX 中进行大量重新计算。
- 图层怎么样:所有墙壁都在同一图层上吗?所涉及的层在碰撞检测矩阵中是否正确配置?
- 无反弹效果总是发生在同一面墙上吗?如果是这样,您可以复制第一面墙并将其放在第二面的位置,看看这面墙是否有问题。
- 如果不是付出太多努力,我会尝试设置一些标准立方体作为墙壁,以确保这
transform.scale
不是罪魁祸首(我在这方面的经历非常糟糕)。
- 你是操纵重力还是
TimeManager.timeScale
从脚本中操纵?
- 顺便说一句:你在使用重力吗?(应该没问题只是