unity3d - 如何防止非触发碰撞器在 Unity 中相互推动?
问题描述
我从 Unity 的资产商店获得了预制的射弹,但无法找到一种方法让它们按照我的预期工作。
射弹有对撞机(不是触发器)、刚体和以 .velocity 移动它们的脚本。它使用 检测碰撞OnCollisionEnter
,使它们推动具有刚体的对象(不想要的行为)。
我确实可以使用OnTriggerEnter
,但是弹丸使用ContactPoint
from无法访问的OnCollisionEnter
方法产生粒子。OnTriggerEnter
我尝试ContactPoint
使用光线投射来模拟这一点,但没有运气。可以从头开始重写代码,但前提是没有其他方法......
在这个视频中,这个家伙与我的射弹、刚体和对撞机具有相同的设置,但是,射弹并没有推动另一个物体,但他没有更深入地了解它的行为。
有任何想法吗?
解决方案
在 Edit -> Project Settings -> Physics 中,您会在底部找到 Layer Collision Matrix。在这里您可以选择哪些图层与哪些图层发生碰撞。游戏对象的默认层是“默认”。为您的射弹和您不希望与之发生碰撞的游戏对象分配一个新层。然后您可以取消选中图层碰撞矩阵中代表这两个图层的框。现在这些游戏对象在碰撞时不会相互影响,并且不会为它们调用像 OnCollisionEnter 这样的方法。希望这能完全回答你的问题。
推荐阅读
- mongodb - Mongo shell 和代码结果返回不同的结果
- matlab - 运行简单场景和传感器模型 3D 仿真时遇到一些问题
- amazon-web-services - 从浏览器上下文调用 AssumeRole API 是否被视为 Auth* 反模式,如果是,为什么?
- mysql - MySQL/MariaDB 添加栏目文档
- firebase - 将所有请求定向到一个函数,包括带有参数的请求
- c99 - a[3] = (a[1], a[2]); 是什么意思?意思是?
- firebase - 发送带有外部链接的推送通知(React Native)
- javascript - 悬停在 Div 上
- linux - 从 CPU 将字节写入 PCIe 地址空间的精确细节
- c++ - 可调用对象作为默认模板参数