c# - 当所有其他对象暂停时移动角色

标签 c# unity-game-engine game-development

我想制作一个像矩阵一样的统一机制,但相反,当我按下一个键时,时间绝对暂停,除了玩家,当我再次按下它时,对象的时间恢复正常。我希望刚体不会变慢。就像《耻辱》中的“弯曲时间”力量

我是新手,所以我不知道如何使一个唯一的对象具有正常时间而其他对象暂停,我只尝试将 Time.timeScale 设置为 0,但显然它影响了所有对象。

有人可以帮我吗?

最佳答案

使用 Time.timeScale 可以很好地停止时间。正如您所做的那样,对于您的播放器,您将使用 Time.unscaledDeltaTime计算它的运动(例如,在 CharacterController.Move() 中使用 Update() ),例如连接的相机,以便它仍然跟随玩家等。

当时间被卡住(timeScale = 0)时,您需要自己处理对象的运动,因为物理系统也停止了。这对于复杂的物理模拟(如碰撞响应)来说可能非常困难,但对于简单的对象或角色/相机移动和简单的碰撞检查来说“相当”简单。对于后者,您可以使用 Physics.SphereCast等等来创建连续的碰撞检测。

关于c# - 当所有其他对象暂停时移动角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76137756/

相关文章:

c# - 为什么我的方法调用 Assembly.GetCallingAssembly() 不是 JIT 内联的?

math - 给定所有 4 个顶点位置,求不规则四面体的高度

unity-game-engine - Unity地形 - 从谷歌地图构建地形

algorithm - 像随机关卡生成一样自由流动,只有一种可能的解决方案?

c# - 在多人游戏中,如何有效地通过套接字发送位置数据?

C# 创建 int 和数组的字典

c# - 从程序集 Microsoft.IdentityModel.Protocols 派生的方法 'GetBaseConfigurationAsync' 无法减少访问

c# - windowStyle=None 的不可调整大小的窗口

unity-game-engine - 如何为 SteamVR 添加 3D 叠加

collision-detection - 涉及快速旋转物体的碰撞检测