在游戏开发中,有时会遇到游戏对象被切换的操作,例如点击一下花瓶会变成一个骷髅,点击骷髅再变回骷髅等。
我们以球体和立方体代表花瓶和骷髅,来实现具体的操作逻辑:
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许可证无效,怎么办?