欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity3d游戏开发中3D物体的点击获取和悬浮获取

程序员文章站 2022-07-13 08:28:56
...

在3D场景中基本的操作就是鼠标对物体的点击和悬浮并获得该物体

1.从摄像机发出射线,发射目标为鼠标点击的位置,判断是否碰撞到物体

2.针对每种物体或每个物体设置相应的内容

场景设置如下:

Unity3d游戏开发中3D物体的点击获取和悬浮获取

下面的程序是处理点击获取物体的基本架构

public class clickedinfo: MonoBehaviour
{
    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;
        if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
        {
            bool cube = false;
            bool sphere = false;
            bool cylinder = false;
            //鼠标悬浮的操作(鼠标点击场景任何地方后)
            if(hit.collider.gameObject.name=="Cube")
            {
                Debug.Log("Mouse on the Cube");                
                cube = true;
            }
            else if (hit.collider.gameObject.name == "Sphere")
            {
                Debug.Log("Mouse on the Sphere");
                sphere = true;
            }
            else if(hit.collider.gameObject.name == "Cylinder")
            {
                Debug.Log("Mouse on the Sphere");
                cylinder = true;
            }
            else
            {
                Debug.Log("Mouse on Nothing");
            }
            //鼠标点击的操作
            if (Input.GetMouseButtonDown(0))
            {
                if (cube)
                {
                    Debug.Log("CUBE");
                }
                else if (sphere)
                {
                    Debug.Log("SPHERE");
                }
                else if (cylinder)
                {
                    Debug.Log("CYLINDER");
                }
                else
                {
                    Debug.Log("NOTHING!");
                }
            }
        }
    }
}