Physics.Raycast() 未检测到 Blender 模型
Blender models not being detected by Physics.Raycast()
我对 Unity 比较陌生。我正在制作国际象棋游戏。在下面的屏幕截图中,您会看到以下 GameObjects:
- 3D 平面作为正方形。
- 棋子的 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
我对 Unity 比较陌生。我正在制作国际象棋游戏。在下面的屏幕截图中,您会看到以下 GameObjects:
- 3D 平面作为正方形。
- 棋子的 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