Unity射线检测不到MeshCollider的原因

当我们构建的模型是单面模型时,就会出现射线检测不到MeshCollider的问题,对于渲染,我们可以Cull Off来实现双面渲染,而在射线检测时,Unity提供了一个API来控制是否检测背面:Physics.queriesHitBackfaces

案例代码:

csharp 复制代码
public bool Raycast(out RaycastHit hitOnGround, out RaycastHit hitOnStructure) 
{
    Physics.queriesHitBackfaces = true;
    
    Ray ray = m_Camera.ScreenPointToRay(Input.mousePosition);
    Physics.Raycast(ray, out hitOnGround, m_Camera.farClipPlane * 2, m_GroundLayer);
    bool onStructure = Physics.Raycast(ray, out hitOnStructure, m_Camera.farClipPlane * 2, m_StructureLayer);
    
    Physics.queriesHitBackfaces = false;

    return onStructure;
}
相关推荐
_Cherry|6 小时前
Unity按钮动态效果
unity·游戏引擎
_Cherry|7 小时前
Unity读取文件夹内容
unity·c#
lrh30258 小时前
Custom SRP - 15 Particles
unity·渲染管线·粒子·srp·扰动效果
璞瑜无文9 小时前
Unity 游戏开发之布局(二)
unity·c#·游戏引擎
高远-临客12 小时前
unity IL2CPP模式下中使用UMP插件打包后无法播放视频监控报错问题解决方案
android·unity·音视频
_Cherry|12 小时前
Unity中窗口调整
unity·c#·游戏引擎
qq_4286396114 小时前
虚幻基础:特效
游戏引擎·虚幻
qq_4286396115 小时前
虚幻基础:将角色的模型替换为自己的模型
游戏引擎·虚幻
_Cherry|16 小时前
Unity在屏幕上滑动
unity·游戏引擎
_Cherry|17 小时前
Unity中使用AVPRO播放视频
unity·c#·音视频