缩放
同样缩放不能只改xyz 只能一起改(相对于世界坐标系的缩放大小只能得 不能改)
//相对于世界坐标系,只能得到,不能修改
this.transform.lossyScale;
//相对于本地坐标系(父对象),可以得到也可以修改
this.transform.localScale;
this.transform.localScale = new Vector3(3,3,3);
Unity没有提供关于缩放的API
之前的 旋转 位移 都提供了 对应的 API 但是 缩放并没有
如果你想要 让 缩放 发生变化 只能自己去写(自己算)
void Update(){
this.tranform.localScale += Vector3.one * Time.deltaTime;
}
看向
让一个对象的面朝向,可以一直看向某一个点或者某一个对象
public transform lookAtObj;
void Update(){
//看向一个点,相对于世界坐标系
this.transform.LookAt(Vector3.zero);
//看向一个对象
this.transform.LookAt(lookAtObj);
}
父子关系
获取和设置父对象
this.transform.parent.name;
设置父对象
this.transform.parent = null;
this.transform.parent = GameObject.Find("Father2").transform;
通过API来进行父子关系的设置
参数一:我的父亲
参数二:是否保留世界坐标的 位置 角度 缩放 信息
true 会保留 世界坐标下的状态 和 父对象 进行计算 得到本地坐标系的信息
false 不会保留 会直接把世界坐标系下的 位置角度缩放 直接赋值到 本地坐标系下
this.transform.SetParent(null);
this.transform.SetParent(GameObject.Find("Father2").transform);
//直接把世界坐标系的值当作本地坐标系来用
this.transform.SetParent(GameObject.Find("Father3").transform, false);
断掉所有子对象
this.transform.DetachChildren();
按名字查找儿子
找到儿子的transform信息
Find方法 是能够找到 失活的对象的 !!!!! GameObject相关的 查找 是不能找到失活对象的
只能找儿子,不能找孙子
this.transform.Find("Cube");
找儿子数量
this.transform.childCount;
//通过索引号得到对应的儿子
//超过最大编号报错,返回值是transform
this.transform.GetChild(0);
for (int i = 0; i < this.transform.childCount; i++)
{
print("儿子的名字:" + this.transform.GetChild(i).name);
}
儿子的操作
public Transform son;
//判断自己的爸爸是谁
//一个对象 判断自己是不是另一个对象的儿子
if(son.IsChildOf(this.transform))
{
print("是我的儿子");
}
//得到自己作为儿子的编号
print(son.GetSiblingIndex());
//把自己设置为第一个儿子
son.SetAsFirstSibling();
//把自己设置为最后一个儿子
son.SetAsLastSibling();
//把自己设置为指定个儿子
//就算你填的数量 超出了范围(负数或者更大的数) 不会报错 会直接设置成最后一个编号
son.SetSiblingIndex(1);