Unity3d 我怎样才能创建一个游戏对象层次结构的副本来模仿原始游戏的所有位置、动作等?像是原作的全息图?

Unity3d 我怎样才能创建一个游戏对象层次结构的副本来模仿原始游戏的所有位置、动作等?像是原作的全息图?,unity3d,Unity3d,我正在使用Unity3d在虚拟现实中构建一个3d台球游戏 我试图展示台球“桌子”(实际上是一个立方体)的微型副本,就像在任何给定时刻一样 我试着实例化台球层次结构的根,只是为了发现它将实例化原始的gameObject(运行它的Start()方法),这完全是有意义的,只是我不想这么做 在实践中,我有一个台球根,它有桌子的所有几何形状,所有的球作为孩子,这些球可以进行物理交互。 在按下按钮时,我试图创建一张桌子的全息图,所有的球在任何给定的时间都处于它们的位置 因此,如果一名球员击中一个球,球在原稿

我正在使用Unity3d在虚拟现实中构建一个3d台球游戏

我试图展示台球“桌子”(实际上是一个立方体)的微型副本,就像在任何给定时刻一样

我试着实例化台球层次结构的根,只是为了发现它将实例化原始的gameObject(运行它的Start()方法),这完全是有意义的,只是我不想这么做

在实践中,我有一个台球根,它有桌子的所有几何形状,所有的球作为孩子,这些球可以进行物理交互。 在按下按钮时,我试图创建一张桌子的全息图,所有的球在任何给定的时间都处于它们的位置

因此,如果一名球员击中一个球,球在原稿中移动,它应该在缩影中显示相同的内容

我想可能会把每一帧的球的位置(以及桌子的旋转等)转换成缩影。但这是非常不理想的

var middpoint=(leftHand.transform.position+righhand.transform.position)/2;
var minimate=实例化(游戏对象、中点、transform.rotation);
minimal.transform.localScale=新矢量3(0.1f、0.1f、0.1f);

这显然不像我上面描述的那样有效。它创建了一个全新的台球立方体实例。(此代码是从台球根中的脚本运行的)

棋盘本身可能不会移动,因此您可以制作全息图并模拟球

自Unity 2018.2以来,您可以创建物理场景并手动模拟它们

对于该问题,您需要:

  • 停止物理模拟。
  • 为独立物理模拟创建新场景。
  • 将物理相关对象和组件复制到预览场景。
    • 有很多方法,但基本上是碰撞器、刚体,对于需要视觉效果的对象,还有渲染器
    • 您可以使用缓存来避免每次都创建这些
    • 从理论上讲,你也可以在主场景中进行模拟,但是你需要对所有你不想模拟的东西进行运动学模拟,还有一些问题
  • 然后手动模拟。
    • 从预览场景中获取:var physicscene=physicpreviewscene.getphysicscene()
    • 模拟:

  • 所以是的,除了避免副本中与物理无关的组件,你无法避免副本;仅通过池和/或缓存减轻其影响



    另一种技术是使用投射(本例中为spherecasting)进行实体模型物理模拟,使用
    速度
    加速度
    (例如重力)和
    时间.fixedDeltaTime
    ,对拦截/碰撞作出反应,使用
    矢量3.Reflect
    或类似的东西。但这只会给你一个物理反应的近似值,不会像拥有多个物理场景那样成为一个实际的(精确的)物理模拟。

    一个简单但可能不适合你的需要的方法是,使用第二个摄像头,只将你的广告牌渲染为渲染纹理,并将其显示为UI或其他内容的一部分。我做了一些类似的事情minimap@Jichael我有点死记硬背,但是:这在虚拟现实中不起作用,因为立体视觉,3D物体的2D表示看起来。。关但在2D中,在中可以很好地工作!