C# Unity网格碰撞器光线投射不工作

C# Unity网格碰撞器光线投射不工作,c#,unity3d,C#,Unity3d,我似乎无法让光线投射击中网格碰撞器。我需要这个来获得纹理uv坐标 if (Input.GetMouseButtonUp(0)) { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100f)) { // We've hit this mesh b/c its the only

我似乎无法让光线投射击中网格碰撞器。我需要这个来获得纹理uv坐标

if (Input.GetMouseButtonUp(0))
{
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if (Physics.Raycast(ray, out hit, 100f))
    {
        // We've hit this mesh b/c its the only one we have ...
        var texture = meshRenderer.material.mainTexture as Texture2D;

        var pixelUV = hit.textureCoord;
        print("pixs uvs" + pixelUV.ToString());
        pixelUV.x *= texture.width;
        pixelUV.y *= texture.height;

        var position = new Position(pixelUV.x, pixelUV.y);
        print("Position: " + position.x + " " + position.y);

        texture.FloodFillBorder(position.x, position.y, fillColor, borderColor);
        texture.Apply();
    }
}
我的游戏对象有这个脚本,带有检查输入的更新函数,还有网格过滤器、网格渲染器和网格碰撞器。网格是由unity菜单制作的简单四边形


我做错了什么?我只是不明白为什么它没有击中网格。相机的
z位置
-10
,网格位于
0
。不同的放置方式会产生相同的结果。

您可以检查网格组件并查看是否选中了“IsTrigger”,但我可以建议其他方法吗

默认情况下,Unity会为您执行整个光线投射。MonoBehavior类具有诸如OnMouseDown()或onMouseDrag()等函数,其中GUI元素或(在您的情况下)具有碰撞器组件的对象获取这些事件。所以,如果你的游戏对象有一个碰撞器组件,只要实现其中一个方法,你就可以开始了

这可能会使您的更新功能保持干净


检查:

嘿,谢谢你的回复,我需要命中物体的uv坐标。尽管如此,我还是决定采用一种更简单的方法,通过转换几个坐标来确定用户点击的位置。