鼠标点击游戏对象-Unity3d

鼠标点击游戏对象-Unity3d,unity3d,raycasting,onmouseclick,Unity3d,Raycasting,Onmouseclick,我有一个小城市网格和一个公寓3d模型。我将网格添加到场景中,并将三维模型放置在网格上 我尝试只在3d模型上处理鼠标点击。我使用下面的代码。但我点击屏幕上的任何地方,它设置为sound=true 我向3d模型游戏对象添加了一个网格碰撞器 if (Input.GetMouseButtonDown (0)) { Plane p = new Plane (Camera.main.transform.forward , transform.position);

我有一个小城市网格和一个公寓3d模型。我将网格添加到场景中,并将三维模型放置在网格上

我尝试只在3d模型上处理鼠标点击。我使用下面的代码。但我点击屏幕上的任何地方,它设置为sound=true

我向3d模型游戏对象添加了一个网格碰撞器

if (Input.GetMouseButtonDown (0)) {
            Plane p = new Plane (Camera.main.transform.forward , transform.position);
            Ray r = Camera.main.ScreenPointToRay (Input.mousePosition);
            float d;
            if(p.Raycast (r, out d)) {
                sound = true;
}   

我如何解决它?

您可以检查游戏对象的标签/名称。您需要这样使用:

void Update() 
{
    if (Input.GetMouseButtonDown (0)) {

        Plane p = new Plane (Camera.main.transform.forward , transform.position);
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 100)) 
        {
            //Choose one of them below!!!

            /// Name Comparison
            if(hit.collider.gameObject.name.equals("NameOfTheObject")){
               ///Do Logic
            }

            //Tag Comparison
            if(hit.collider.gameObject.CompareTag("TagOfTheObject")){
                ///Do Logic
            }
        }
    }
}

如何使用Plane.Raycast执行相同的任务?它不需要任何对撞机。而且它不包括命中。@zumma从你的代码判断,它似乎是你在创造一个你总是命中的飞机。试着换一下飞机values@zumma什么是d值?请写Debug.Log(d);在if语句之后。@Barışırıka值是34、110、199,当我单击三维模型的不同部分时。它的射程很宽。它检查光线是否与你的平面相交。所以它相交,距离是34110199。我认为比较击中是一个好方法。因为当你点击鼠标时,它不会产生太多的性能问题。