Unity3D疯狂教室案例开发[下](十六)

本节要点

#1.通过 Tag 标签查找物体

1.Tag 简介

Tag 标签,就是一个标签。标签可以起到标识,区分的作用。

同一类的模型,我们可以根据需要给他们设置成统一的标签。

2.给模型添加 Tag 标签

选中一个模型,在模型的 Inspector 面板上的顶部位置,设置 Tag 选项为一个


具体的标签。

如果说引擎提供的标签没有自己想要的标签,可以自己手动添加新标签。

演示标签的添加方式。

3.通过 Tag 标签查找 N 个物体

GameObject.FindGameObjectsWithTag(string):[静态方法]

通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个数组。

String:标签名

4.for 循环输出模型信息

通过 for 循环遍历 FindGameObjectsWithTag()方法返回的数组,输出

游戏物体的信息。

5.通过键盘按键实现桌椅跳动

按下某键,学生全部上移 2 米;

抬起某键,学生全部下移 2 米;


#2.触发器实现学生跳动

1.创建触发器

在学生的范围内,创建一个空物体,然后添加 Box Collider,并调整大小。

最后勾选“Is Trigger”属性。

2.使用触发器实现桌椅跳动

OnTriggerEnter()    OnTriggerExit()

场景视图

关键代码

public class TeacherTrigger : MonoBehaviour {

    private GameObject[] m_GameObject;
    // Use this for initialization
    void Start () {

        //通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个数组;
      m_GameObject= GameObject.FindGameObjectsWithTag("Teacher");


        //测试: 通过for循环遍历数组下面元素的名称

      //for (int i = 0; i < m_GameObject.Length; i++)
      //{
      //    Debug.Log(m_GameObject[i].name);
      //}




    }
    
    // Update is called once per frame
    //测试按下Z键让teacher起立和坐下
    //void Update () {
    //    //向上
    //    if (Input.GetKeyDown(KeyCode.Z))
    //    {
    //        TeacherUp();
    //    }

    //    //向下
    //    if (Input.GetKeyUp(KeyCode.Z))
    //    {
    //        TeacherDown();
    //    }
    //}


    void TeacherUp()
    {
        for (int i = 0; i < m_GameObject.Length; i++)
        {
            //通过游戏对象获取组件 transform属性后的对象方法(让物体向上移动3m,自身坐标系)
            m_GameObject[i].GetComponent<Transform>().Translate(Vector3.up * 3, Space.Self);
        }

    }

    void TeacherDown() {
        for (int i = 0; i < m_GameObject.Length; i++)
        {
            //通过游戏对象获取组件 transform属性后的对象方法(让物体向上移动3m,自身坐标系)
            m_GameObject[i].GetComponent<Transform>().Translate(Vector3.down * 3, Space.Self);
        }
    
    }


    //走到讲台是全体起立
    //触发器
    void OnTriggerEnter(Collider coll) {
        if (coll.gameObject.name=="Student")
        {
            TeacherUp();
        }
    
    }

    //离开讲台时全体坐下
    void OnTriggerExit(Collider coll) {
        if (coll.gameObject.name=="Student")
        {
            TeacherDown();
        }
    
    }


}

小结

Unity API.png

推荐阅读更多精彩内容