Unity开发备忘录000023:鼠标点击物体实现游戏对象的切换

在游戏开发中,有时会遇到游戏对象被切换的操作,例如点击一下花瓶会变成一个骷髅,点击骷髅再变回骷髅等。

我们以球体和立方体代表花瓶和骷髅,来实现具体的操作逻辑:

1. 新建两个空物体,一个命名为GameObject1,另一个命名为GameObject2;

2. 在GameObject1下创建一个立方体Cube,在GameObject2下创建一个球体Sphere,并将球体隐藏(勾掉其Inspector下的Sphere选项),此时场景中只能看见Cube对象;

3. 在Hierarchy下,新建一个立方体,命名为Switch,并把其Inspector下的Mesh Renderer属性勾掉,只留着Box Collider作为将来交互的碰撞器;

4. 在Switch上添加如下代码:

 void Start () {
 
        GameObject ParentObject1 = GameObject.Find("GameObject1");
        cube = ParentObject1.transform.Find("Cube").gameObject;
        GameObject ParentObject2 = GameObject.Find("GameObject2");
        sphere = ParentObject2.transform.Find("Sphere").gameObject;

    }
  
    void Update () {

        MouseRay();

    }
    void MouseRay()
    {

        Ray ray;

        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        
        if (Input.GetMouseButtonDown(0))
        {
            onOff = !onOff;
        
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit) )
            {
                
                sphere.SetActive(onOff);
                cube.SetActive(!onOff);
            }
           
        }

    }

5. 在Start ()方法中,查找Cube对象和Sphere对象分别付给cube和sphere变量,因为这两个对象将来会交替隐藏,所以用Find()方法查找时,它们一定要放到没有被隐藏的父对象(GameObject1和GameObject2)之下;

6. 在MouseRay()方法中,实现鼠标点击选择对象。此时鼠标点击的对象是Switch,由于其上有Box Collider鼠标射线可以与它交互;

7. if语句实现鼠标点击时,改变布尔变量onOff,使其为true和false切换;

8. 将onOff变量作为SetActive(onOff)的实参,便实现了sphere和cube交替隐藏和显示;

9. 最后,将MouseRay()方法在Update () 方法中调用,便实现了鼠标点击游戏对象的切换。

老孙头课堂:https://edu.csdn.net/lecturer/3617

上一篇:Unity开发备忘录000022:Unity许可证无效,怎么办?

下一篇:Unity开发备忘录000024:如何为Projector动态加载纹理投影

工程包:鼠标点击物体实现游戏对象的切换.unitypackage

猜你喜欢

转载自blog.csdn.net/sunbowen63/article/details/98943631
今日推荐