Physics.Raycast() 未检测到 Blender 模型

Blender models not being detected by Physics.Raycast()

我对 Unity 比较陌生。我正在制作国际象棋游戏。在下面的屏幕截图中,您会看到以下 GameObjects:

  1. 3D 平面作为正方形。
  2. 棋子的 Blender 模型。

现在,这是一个非常基本的脚本,我用它来检测单击的对象并将其删除(稍后将添加更多功能)。

void Update () {
    if (Input.GetMouseButtonDown(0))
    {
        Ray ray = mainCamera.GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            //highlightPiece(hit.transform.gameObject, whiteSelectedTexture, false);
            Destroy(hit.transform.gameObject);
        }
    }
}

问题是 Unity 原生的游戏对象(构成正方形的平面对象)被光线投射检测到,但混合器模型却没有。屏幕截图证实了这一点,因为应该检测到最近的物体。脚本最终删除了方块而不是棋子(我实际上计划 select 并继续处理)。

您肯定还没有向导入的 Blender 对象添加 Collider

Select每一个棋子加一个BoxCollider/CapsuleCollider.

对了,我觉得你可以去掉棋盘的Collider

此外,我强烈建议您在进行光线投射时使用图层,以提高效率。查看以下 Unity 文章:https://unity3d.com/fr/learn/tutorials/topics/physics/physics-best-practices