我有来自多个对象的球体构建。我想要做的是当我触摸/单击一个对象时,该对象应该找到所有辅助对象。但是因为它们都没有移动,所以不能使用碰撞检测。
即使碰撞器相互碰撞,我也无法找到检测这些辅助物体的方法,正如我在场景中可以看到的那样。我尝试了所有的可能性,但没有一个可以工作,因为没有物体在移动。
有没有办法检查手动碰撞检测,还是有某种方法让Unity3d自动进行碰撞检测?
答案 0 :(得分:3)
您可以保留所有这些对象的列表,然后当您的事件发生时,您可以向所有人发送消息以执行您希望他们执行的操作。
让我们假设您希望球体分成小块。您向球体发送Force
条消息。然后你使用牛顿运动定律,找出每件作品的速度。记住速度是一个向量,因此它有方向。
我就是这样做的,并且仍然对我的游戏/模拟中发生的事情保持适当的控制。请记住F = ma
。
答案 1 :(得分:1)
您可以使用RaycastHit(http://docs.unity3d.com/Documentation/ScriptReference/RaycastHit.html)进行碰撞,这也适用于非移动物体,但需要更高的性能
答案 2 :(得分:1)
您可以为每个对象添加刚体;当你触摸其中一个时,向它施加一个力,它就会移动并触发相邻物体的事件。
由于您不想移动您触摸的对象,您可以在OnCollider或OnTrigger事件处理函数中取消移动。
答案 3 :(得分:0)
我设法通过检查所选对象与作为球体一部分的所有其他对象的距离来解决此问题。如果距离低于某个值,那么它就是一个辅助对象。
虽然这肯定不是万无一失的,但到目前为止它没有问题。 对不起,我不够清楚。感谢所有的建议。