本节要点
#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();
}
}
}
小结