缩放

同样缩放不能只改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);
10-19 08:27