Unity3d:对象相互通过?

Posted

技术标签:

【中文标题】Unity3d:对象相互通过?【英文标题】:Unity3d: Object's pass through each other? 【发布时间】:2017-03-10 11:48:45 【问题描述】:

对象的(对撞机)相互穿过?如何解决?

https://youtu.be/gJKCEMNI9ls

【问题讨论】:

当您说对撞机时,您指的不是重叠图像吗?因为这只是 z-fighting,因为两个对象具有相同的坐标 【参考方案1】:

您的一个对撞机可能勾选了 IsTrigger 复选框,这会导致球跳出。但我认为更有可能是刚体没有足够频繁地检查碰撞,以至于当你快速旋转时它会被剪掉。

改变

碰撞检测:离散

碰撞检测:连续(或动态)

在你 Sphere 的刚体中。

阅读更多关于碰撞检测的信息here:

离散:对场景中的所有其他碰撞器使用离散碰撞检测。其他碰撞器在测试碰撞时将使用 Discreet 碰撞检测。用于正常碰撞(这是默认值)。
连续: 对动态碰撞器(带有刚体)使用离散碰撞检测,对静态 MeshColliders(无刚体)使用连续碰撞检测。设置为 Continuous Dynamic 的刚体将在测试与此刚体的碰撞时使用连续碰撞检测。其他刚体将使用离散碰撞检测。用于连续动态检测需要碰撞的物体。 (这对物理性能有很大影响,如果您对快速物体的碰撞没有问题,请将其设置为离散) Continuous Dynamic:对设置为 Continuous 和 Continuous Dynamic Collision 的对象使用连续碰撞检测。它还将使用针对静态 MeshColliders(没有刚体)的连续碰撞检测。对于所有其他对撞机,它使用谨慎的碰撞检测。用于快速移动的物体。

【讨论】:

我尝试更改类型但没有结果。我检查了 Trigger-checkbox 上的每个对象 - 一切都是错误的((( 球体什么时候掉出来?它总是在同一个位置吗?是你快速旋转的时候吗? 是的,只有快速旋转。它可以在任何地方退出。如果有角落,那么最常见的是它们。 并且将碰撞检测更改为连续没有工作。我建议你制作更宽的对撞机......或者调整你的旋转代码。它是如何旋转的?您是否在每一帧都使用力量或“传送”(设置位置)?因为如果你快速移动某些东西,这意味着它每帧会移动更多的像素。如果它移动得足够快,它将在球上方移动(传送)并将其放在框架内。使用物理时,您应该使用物理移动事物。并在 FixedUpdate 中处理 我使用这个代码。怎么对? void Update () float h = Input.GetAxis("Vertical");浮动 v = Input.GetAxis("水平"); transform.Rotate(新 Vector3(h,0f,v)); 【参考方案2】:

好的,碰撞器不会阻止您在编辑器中重叠游戏对象。您只需将迷宫的墙壁对齐,这样它们就不会(视觉上)交叉,但您可以重叠实际的对撞机,这样迷宫中就没有洞了。

如果您真的不希望它们重叠,请在编辑器中更改碰撞器的位置或大小。

您可以更改中心和大小,如图所示,使它们不会重叠。

【讨论】:

我试图在飞机上扔球(没有交叉点)在某些情况下球飞过飞机 好的,快速提问。你有没有混合飞机和盒子来组成迷宫?即使你有飞机,也不应该使用网格对撞机,而是使用盒式对撞机并确保它有一定的宽度。 我尝试了不同的选项。抱歉,我只是深入研究了这个 teznologiyu。你可以展示一个例子,它有四堵墙和一个里面的物体,它快速旋转并且没有任何东西掉出来? )))对不起傲慢))) 不确定你所说的傲慢是什么意思,但我只是想消除一些可能解决你问题的事情。我以前遇到过物体穿过飞机的问题,我不再使用它们。结合@Fredrik 的建议和我的建议,您应该可以到达那里。 1. 连续动态 2. 没有平面 3. 确保您使用的是固定更新功能 4. 确保盒子碰撞器足够宽。 请看这里drive.google.com/file/d/0B07aYSnGHQe9aGx4d1lkd0FZd0E/…

以上是关于Unity3d:对象相互通过?的主要内容,如果未能解决你的问题,请参考以下文章

2019.9.18 Unity3D与Android相互传递消息 & unity与ios相互传递消息

Unity3d 与IOS 相互调用

unity3d中如何用脚本创建对象或者类

通过脚本在 Unity3D 中隐藏/取消隐藏对象

unity3d通过代码动态创建销毁游戏对象

Unity3D教程:实现房产项目中的材质动态切换