【发布时间】:2016-03-02 15:32:36
【问题描述】:
目标:我正在开发一款高度依赖 Unity 2D 物理的回合制游戏。对我来说重要的是,所有身体一旦停止移动就进入睡眠状态,因为我在等待它开始下一轮。
问题:不幸的是,身体从不入睡的情况经常发生。我尝试调整 Physics2D 设置好几天,从而提高稳定性和/或性能,但这个问题仍然存在。我发现这个问题与 HingeJoint2Ds 有关:当他们尝试强制执行约束(角度限制或马达力)时,他们不会允许他们连接的身体睡觉。
我还尝试手动将移动缓慢的物体设置为睡眠状态,但是(这对我来说听起来很奇怪)似乎在一个物体上调用 .Sleep() 会导致其他物体醒来,从而使整个世界都无法入睡。
问题:是否有人面临类似情况?关于如何解决它的任何线索或解决方法? 谢谢!
【问题讨论】:
-
确保刚体没有碰撞或受力。因为这将迫使他们醒来。您可能还想继续应用睡眠,因为睡眠会迫使刚体至少睡眠一帧。但不一定要几个。
-
您好 MX D,感谢您的建议。我确信没有施加任何力量:唯一能让身体保持清醒的东西是一些角度限制和/或电机(速度为 0).. 一旦我禁用它们,整个世界都会睡着。目前,我正在使用一种解决方法,不断检查每个刚体,如果它没有发现任何超过睡眠容忍度的速度(或 angularVelocity),它会强制整个场景进入睡眠状态。
标签: c# unity3d box2d game-physics unity3d-2dtools