UE5 物理模拟 与 触发检测
文章目录
- 碰撞
- 条件
- 开启模拟
- 关闭模拟
- 多层级的Mesh
- UE的BUG
- 触发
- 触发条件
碰撞
条件
1必须有网格体组件
2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果
注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围
3只有网格体组件可以开启物理模拟
4 碰撞双方对对方的通道必须都设置为阻挡,本物体的通道如下
开启模拟
SetActorEnableCollision:设置Actor启用碰撞
Set Simulate Enable:开启物理模拟
Get Component by class:查找网格体组件
关闭模拟
上边反过来
多层级的Mesh
启用哪个Mesh的物理模拟和碰撞,就会计算该mesh下的所有Mesh,但是如果子mesh设置了不检测特定的层,那么父mesh的物理模拟不会对忽略的层有反应
UE的BUG
一旦开启物理模拟,会导致网格体和根物体分离,虽然还是一个物体,但选中网格时,根物体会保持在分离前的位置不再移动
解决方案:
让网格体组件做根物体。
方法:
新建一个网格体组件,直接拖到根物体身上,注意不是拖到物体名上。
扩展:
对于枪械,他的网格体可能时静态网格体,也可能时骨骼网格体,如果简单的把某一种网格体作为跟节点,会导致另一个网格体不被支持。
所以我们要用静态网格体做为根物体,在weapon的子类中,如ak47,再在根物体下新建一个网格体,拖入真正的模型
但是这样又会导致根物体没有网格,进而开启物理模拟无效,方案是拖入一个非常小的网格,新建一个盒体笔刷,大小调到0.1,然后点击创建静态网格体,生成一个smallcube,将这个smallcube设置为武器基类的root静态网格体的网格,这样就可以激活物理模拟
触发
触发条件
和碰撞的条件类似,但是只要有一方对另一方的通道设置为重叠或阻挡即可
注意,是指响应触发事件的网格体的通道设置,其他网格体的设置不会影响触发结果