我对Unity比较新。我正在制作国际象棋游戏。在下面的屏幕截图中,您会看到以下 GameObjects :
目前,这是一个非常基本的脚本,我用它来检测点击的对象并将其删除(稍后会添加更多功能)。
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的原生游戏对象(制作正方形的平面对象)是由光线投射检测到的,但是混合器模型不是。这是由屏幕截图确认的,因为应该检测到最近的对象。该脚本最终删除了正方形,但没有删除棋子(我实际上计划选择和处理它)。
答案 0 :(得分:3)
您确实没有为导入的Blender对象添加Collider
。
选择每个国际象棋棋子并添加BoxCollider
/ CapsuleCollider
。
顺便说一句,我认为你可以移除棋盘的碰撞器。
此外,我强烈建议您在使用光线投影时使用图层,以便更高效。请查看以下Unity文章:https://unity3d.com/fr/learn/tutorials/topics/physics/physics-best-practices