Unity SFPSC抓钩脚本问题:如何配置自定义对象为可抓取
抓钩可抓取对象的判定规则
- 必备基础条件:对象必须挂载已启用的非触发模式碰撞体(Collider组件的
Is Trigger选项为未勾选状态),物理射线仅能检测到带有有效碰撞体的对象 - 核心筛选规则:对象所属的Layer层,包含在
SFPSC_GrapplingHook组件暴露的layerMask参数勾选范围内,源码中抓钩的两次射线检测均以此参数作为可抓取对象的筛选依据。
自定义对象配置为可抓取的操作步骤
- 给自定义对象添加有效碰撞体
在目标对象的Inspector面板点击Add Component,添加匹配对象形状的碰撞体组件(规则物体可选Box、Sphere、Capsule Collider,不规则模型可使用Mesh Collider,移动物体如需网格碰撞体需勾选Convex选项),确保碰撞体Enabled为勾选状态、Is Trigger为未勾选状态。 - 配置对象所属Layer层
点击Inspector面板顶部的Layer下拉菜单:
- 复用现有层级:直接选择演示场景内可抓取对象使用的层级即可
- 新建专属层级:点击
Add Layer,在空置的层级位输入自定义名称(例如Grappable),返回对象面板后选中该新建层级
- 同步抓钩组件的LayerMask配置
找到挂载SFPSC_GrapplingHook组件的玩家对象,在Inspector面板找到该组件Properties分组下的Layer Mask参数,勾选上一步给自定义对象设置的层级即可生效。
配置后仍无法抓取的排查方向
- 确认抓钩与目标对象之间没有其他碰撞体遮挡,源码的第二次无层级限制射线会过滤掉被遮挡的可抓取对象
- 确认目标对象与玩家的距离小于组件设置的
maxGrappleDistance参数值(默认100单位) - 确认目标对象的碰撞体没有被其他脚本动态禁用
内容的提问来源于stack exchange,提问作者Pena Plays
相关产品推荐
相关产品推荐

