Unity3d Slowmo 仅适用于选定对象 - 物理问题Bayonetta 女巫时间

问题描述

我正在创建类似于 Bayonetta 女巫时间功能的慢动作机制,其中唯一不受慢动作影响的对象是玩家。

我现在面临的主要问题是处理似乎仅基于一个完全不可变且依赖于 Time.timeScale 的时间步长变量的引擎物理。

理想的解决方案是将 Time.timeScale 设置为某个较低的值,并从新设置的低 timeScale 中排除玩家物理/力学,这样一切都会变慢并且玩家保持不变,使用认时间步长。

当然,我可以将任何玩家翻译乘以我自己的自定义 Time.deltaTime 甚至 Time.unscaledDeltaTime 以避免更改 Time.timeScale 的影响,每当我仅依靠游戏引擎物理来执行任何操作时就会出现问题一种运动。

例如 - 跳跃机制使用 rb.AddForce() 方法将玩家射向空中 - 在这种情况下,我只依赖游戏引擎物理。我不会在每一帧中都覆盖玩家速度,这样我就可以将它乘以我自己的 deltaTime,这样就可以了。

就我而言,不可能为单个刚体分配某种用于物理计算的自定义时间步长 - 游戏中的每个刚体都使用与 Time.timeScale 相关的相同时间步长。

问题还在于制作已经走得很远了,游戏在很多地方都依赖引擎物理,我们很想找到一个不需要完全重构运动机制的解决方案 - 看起来也很悲伤,以避免因为这种限制的发动机物理

对于动态刚体,有没有什么聪明的方法可以做到这一点? 当真的是 0.1f 时,我可以让刚体表现得像 Time.timeScale = 1f 吗? 是否有任何黄金公式可以应用于刚体,使其表现得像不同的时间尺度? 我们是否注定要开始使用自定义时间步长编写我们自己的物理?

我希望得到任何帮助, 节日快乐。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)