本節要點
#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