1.模型中心点
模型身上的坐标轴的中心点,也就是我们模型的中心点。
模型的的位置,旋转,缩放都是相对于模型的中心点来进行变化的。
2.改变模型中心点
创建一个空物体,创建父子关系(将Door拖拽到空物体下),通过父物体来控制子物体。
也就间接的改变了模型的中心点。
3.中心点工具
Center:当选中两个模型的时候,设置为“Center”,模型组的中心点就在
两个模型的中间中心位置。
Pivot:当选中两个模型的时候,设置为“Pivot”,模型组的中心点就在后选中的模型的中心点位置。
4.使用键盘按键实现开关门
使用 Transform.Rotate(Vector3,float)旋转模型:
Vector3:沿某个轴向旋转
Float:旋转的度数
public class Door : MonoBehaviour {private Transform m_Transform;void Start () {m_Transform = gameObject.GetComponent<Transform>();}void Update () {if(Input.GetKeyDown(KeyCode.Z)){//open.OpenDoor();}if (Input.GetKeyUp(KeyCode.Z)){// close.CloseDoor();}}public void OpenDoor(){m_Transform.Rotate(Vector3.up, 90);}public void CloseDoor(){m_Transform.Rotate(Vector3.up, -90);}
}
开门关门方法:
public void OpenDoor(){m_Transform.Rotate(Vector3.up, 90);}public void CloseDoor(){m_Transform.Rotate(Vector3.up, -90);}
1.添加触发器
① 创建一个空物体,添加“Box Collider”组件,并设置大小和中心点;
② 将“Box Collider”勾选“Is Trigger”变成触发器;
2.代码实现触发器开关门
OnTriggerEnter()
OnTriggerExit()
3.查找游戏物体
GameObject.Find(string):[静态方法] 通过名字查找游戏物体
String 游戏物体的名字
1.Tag 简介
Tag 标签,就是一个标签。标签可以起到标识,区分的作用。
同一类的模型,我们可以根据需要给他们设置成统一的标签。
2.给模型添加 Tag 标签
选中一个模型,在模型的 Inspector 面板上的顶部位置,设置 Tag 选项为一个具体的标签。
如果说引擎提供的标签没有自己想要的标签,可以自己手动添加新标签。
演示标签的添加方式。
3.通过 Tag 标签查找 N 个物体
GameObject.FindGameObjectsWithTag(string):[静态方法]
通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个数组。
String:标签名
新建一个空物体,新建脚本附上。
4.for 循环输出模型信息
通过 for 循环遍历 FindGameObjectsWithTag()方法返回的数组,输出游戏物体的信息。
5.通过键盘按键实现桌椅跳动
按下某键,桌椅全部上移 2 米;
抬起某键,桌椅全部下移 2 米;
1.创建触发器
在桌椅的范围内,创建一个空物体,然后添加 Box Collider,并调整大小,使之完全包裹住所有的桌椅。下图的绿色框即为Box Collider 骨架。
最后勾选“Is Trigger”属性。
2.使用触发器实现桌椅跳动
OnTriggerEnter() OnTriggerExit()
public class DeskTrigger : MonoBehaviour {private GameObject[] m_desk;// Use this for initializationvoid Start () {m_desk = GameObject.FindGameObjectsWithTag("Desk");/*for(int i = 0; i < m_desk.Length; i++){Debug.Log(m_desk[i].name);}*/}// 利用按键进行控制void Update () {if(Input.GetKeyDown(KeyCode.Z)){DeskUp();}if (Input.GetKeyUp(KeyCode.Z)){DeskDown();}}void DeskUp(){for(int i = 0; i < m_desk.Length; i++){m_desk[i].GetComponent<Transform>().Translate(Vector3.up * 10, Space.Self);}}void DeskDown(){for (int i = 0; i < m_desk.Length; i++){m_desk[i].GetComponent<Transform>().Translate(Vector3.down * 10, Space.Self);}}void OnTriggerEnter(Collider coll){if(coll.gameObject.name == "Student"){DeskUp();}}void OnTriggerExit(Collider coll){if(coll.gameObject.name == "Student"){DeskDown();}}
}
运行动图结果如下:
本文发布于:2024-01-28 13:09:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064186037652.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |