在 Unity 中,想要根据鼠标当前的屏幕坐标判断场景里被点击到的世界物体,可以结合摄像机发射的射线和物理系统的 Raycast 来完成。思路是:先由主摄像机把鼠标位置转换成一条从镜头出发、穿过屏幕点的射线,再让射线去和场景中的碰撞体求交,拿到命中的 GameObject 后就能根据其 tag 做后续判断。

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

                Physics.Raycast(ray, out hit);

                string tag = hit.collider.gameObject.tag;
                Debug.Log("click is " + tag);

                if (tag == "enemy")
                {
                    _target = hit.collider.gameObject;
                    this.applyTarget();


                }

上面的片段演示了完整的流程:通过 Camera.main.ScreenPointToRay 把鼠标屏幕坐标转换为射线,再调用 Physics.Raycast 进行碰撞检测,命中之后从 hit.collider.gameObject 取出被点中的物体,并读取它的 tag。如果 tag 是 enemy,就把该物体记录为当前目标,随后调用 applyTarget 执行后续逻辑。