模型资源¶
命名规范 · 碰撞设置 · 常见问题。
命名规范¶
| 前缀 | 类型 | 示例 |
|---|---|---|
SM_ |
静态网格 | SM_Beaker_250ml |
SK_ |
骨骼网格 | SK_Character_Female |
M_ |
基础材质 | M_Glass |
MI_ |
材质实例 | MI_Glass_Blue |
T_ |
贴图 | T_Beaker_Diffuse |
项目中存在部分中文命名的资产(如
材质_015、垃圾桶_立方体),中文路径在打包、DDC 缓存等环节可能出问题,建议后续逐步改为英文。
碰撞预设¶
每个静态网格都需要设置碰撞,否则无法被检测到。
选中模型 → 右键 → 静态网格设置 → 碰撞复杂度:
| 碰撞类型 | 说明 | 什么时候用 |
|---|---|---|
| 简单碰撞 | 用盒子、球、胶囊近似包裹模型 | 大部分情况,性能好 |
| 复杂碰撞 | 按模型三角面精确碰撞 | 需要精确形状时才用(比如试管口) |
| 无碰撞 | 完全不参与碰撞检测 | 纯装饰物、背景 |
碰撞预设模板¶
选中模型 → 细节面板 → 碰撞预设下拉:
| 预设 | 效果 |
|---|---|
| BlockAll | 阻挡一切(需要碰撞的一般先选这个) |
| OverlapAll | 重叠一切(只触发,不阻挡) |
| NoCollision | 无碰撞 |
| Custom | 自定义,指定哪个通道阻挡、哪个重叠 |
碰撞不触发 / 点击无效的常见原因¶
调试技巧:视口左上角点 显示 → 碰撞,或按
Alt+C,可以直观看到每个物体的碰撞体积。
通用原因¶
-
碰撞未生成:导入 FBX 时没勾选"自动生成碰撞",模型默认无碰撞 → 静态网格编辑器 → 碰撞菜单 → 自动凸包碰撞
-
碰撞预设不对:设了
NoCollision或对目标通道设了忽略 -
碰撞通道不匹配:射线/球形检测时用的碰撞通道,和模型上启用的通道不一致
-
碰撞体积太小:自动生成的碰撞可能只是模型的一小部分 → 静态网格编辑器里手动调整
-
Actor 的碰撞未启用:检查 Actor 细节面板,"生成碰撞"是否勾选
-
检测距离不够:射线/球体检测的半径或距离太短,没够到物体
-
Actor 被其他物体挡住:射线检测遇到第一个物体就停了,后面的检测不到。最阴的是场景里的 UI 控件遮挡——3D Widget 或 HUD 挡在物体前面,射线打到 UI 上就停了,背后的物体永远检测不到