Unity 3D游戏开发 - U3D入门 | 疯狂教室案例开发(下)

栏目: 编程语言 · 发布时间: 6年前

通过 Tag 标签查找物体

  • Tag 简介

    • Tag:标签。标签可以起到标识、区分的作用,同一类模型,我们可以根据需要给它们设置成统一的标签。

  • 给模型添加 Tag 标签

    • 选中一个模型,在其 Inspector 面板顶部,设置 Tag 选项为一个具体标签。

  • 通过 Tag 标签查找 N 个物体

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

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

    • String:标签名。

  • for 循环输出模型信息

    • 通过 for 循环遍历 FindGameObjectsWithTag() 方法返回的数组,输出游戏物体的信息。

  • 通过键盘按键实现桌椅跳动

    • 按下某键,桌椅全部上移 2 米。

    • 抬起某键,桌椅全部下移 2 米。

      private GameObject[] m_Desks;
      
      	void Start () {
              m_Desks = GameObject.FindGameObjectsWithTag("Desks");
      
              for(int i = 0; i < m_Desks.Length; i++)
              {
                  Debug.Log(m_Desks[i].name);
              }
      	
      	}
      	
      	void Update () {
              if(Input.GetKeyDown(KeyCode.Z))
              {
                  DesksUp();
              }
      
              if (Input.GetKeyUp(KeyCode.Z))
              {
                  DesksDown();
              }
      	
      	}
      
          void DesksUp()
          {
              for(int i = 0; i < m_Desks.Length; i++)
              {
                  m_Desks[i].GetComponent<Transform>().Translate(Vector3.up * 2, Space.Self);
              }
          }
      
          void DesksDown()
          {
              for (int i = 0; i < m_Desks.Length; i++)
              {
                  m_Desks[i].GetComponent<Transform>().Translate(Vector3.up * -2, Space.Self);
              }
          }

触发器实现桌椅跳动

  • 创建触发器

    • 在桌椅的范围内, 创建一个空物体,添加 Box Collider 并调整大小,勾选 “Is Trigger” 属性。

  • 使用触发器实现桌椅跳动
    • OnTriggerEnter()
    • OnTriggerExit()
      private GameObject[] m_Desks;
      
      	void Start () {
              m_Desks = GameObject.FindGameObjectsWithTag("Desks");
      	}
      
          void DesksUp()
          {
              for(int i = 0; i < m_Desks.Length; i++)
              {
                  m_Desks[i].GetComponent<Transform>().Translate(Vector3.up * 2, Space.Self);
              }
          }
      
          void DesksDown()
          {
              for (int i = 0; i < m_Desks.Length; i++)
              {
                  m_Desks[i].GetComponent<Transform>().Translate(Vector3.up * -2, Space.Self);
              }
          }
      
          void OnTriggerEnter(Collider coll)
          {
              if(coll.gameObject.name == "Student")
              {
                  DesksUp();
              }
          }
      
          void OnTriggerExit(Collider coll)
          {
              if (coll.gameObject.name == "Student")
              {
                  DesksDown();
              }
          }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book, Vol. 2

The Web Designer's Idea Book, Vol. 2

Patrick McNeil / How / 2010-9-19 / USD 30.00

Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具