如何用Blender创建可检测Raycast的Unity圆形Mesh Collider?
问题:Blender创建圆形Mesh无法在Unity中被Raycast检测
我正尝试用Blender创建能在Unity中被Raycast检测的圆形Mesh Collider,执行了Add>Mesh>Circle操作,但无法正常工作,请问遗漏了什么步骤?
更新内容
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hit)) { Vector2 textureCoord = hit.textureCoord; int pixelX = (int)(textureCoord.x * _templateDirtMask.width); int pixelY = (int)(textureCoord.y * _templateDirtMask.height); }
注:原代码中nt pixelY为笔误,已修正为int pixelY
更新3



更新4

解决步骤
Blender端关键操作
默认创建的Circle是空心轮廓,必须转为实心面:进入编辑模式(Tab键),选中所有顶点,按F键生成填充面,否则导出的Mesh没有闭合碰撞形状,Unity无法正确识别碰撞体。
导出FBX时,务必勾选Apply Transform,确保缩放、旋转、位置全部应用,避免导入Unity后变换异常导致碰撞失效。Unity端配置检查
给导入的物体添加Mesh Collider组件,静态物体无需勾选Convex;确认物体所在Layer不在Raycast忽略列表中。
修正代码笔误(nt改为int),确保Camera.main能正确获取主相机(需给相机设置MainCamera标签),_templateDirtMask已赋值有效纹理。
开启Scene视图Gizmos,查看Ray发射路径,或打印hit.collider判断是否检测到碰撞体。常见排查项
重置物体变换:点击Inspector面板的Reset按钮,确保缩放为(1,1,1),避免缩放变形导致碰撞体失效。
检查Mesh Collider是否启用,以及Physics设置中是否未忽略该物体所在层。
内容的提问来源于stack exchange,提问作者Newboy11
相关产品推荐
相关产品推荐

