Unity 物理场景从主场景复制所有对撞机

时间:2021-06-08 20:44:05

标签: unity3d game-physics

我正在尝试使用 Unity 的物理场景在主场景之外执行一些模拟。话虽如此,我需要物理场景中主场景中的所有碰撞器。使用来自另一个场景的所有现有对撞机创建物理场景的最简单方法是什么?我是否必须遍历所有内容,对每个对象使用 SceneManager.MoveGameObjectToScene(...) 然后在模拟结束时将它们移回?这似乎无法扩展。

编辑 我有一个多人游戏,当我从服务器得到响应时,我将获取它们的速度和服务器位置,然后应用所有本地移动,因为该数据包是通过 Physics2D.Simulate() 发送的,以使速度正确应用于该位置。现在我需要对射弹做同样的事情,所以我需要地图碰撞器和玩家的碰撞器。我正在阅读为物理模拟做的最好的事情是使用物理场景。如果我在主场景中调用 Physics2D.Simulate() 以获取超过 1 组数据(玩家移动与射弹),我会遇到很多屏幕抖动。将这些模拟移动到单独的场景中可以消除抖动。

我看到的唯一替代方法是自己重新实现 Physics2D.Simulate(),这似乎是一个糟糕(且复杂)的想法。

谢谢。

1 个答案:

答案 0 :(得分:0)

我最终只需要碰撞器和刚体,所以我用这两个对象在物理场景中创建了一个空对象。每次我需要运行模拟时,我都会用当前玩家刚体的详细信息更新刚体,然后运行模拟并将模拟的输出速度再次应用于玩家刚体。