Unity API之transform组件

本文深入讲解Unity中的Transform组件,包括其属性如位置、旋转、缩放等,以及方法如translate、rotate、lookat等的使用。同时介绍了如何利用Transform组件进行物体的操作和查找。

这里在介绍Transform组件之前,我们首先先来了解一下什么是API.通俗的讲,API就是程序编程的接口,是一些预先定义好的函数。unity引擎为我们提供了丰富的组件和类库,为开发者提供了很大的便利。熟练掌握和使用这些API,对开发效率的提高有很大的作用。

Transform组件:unity游戏场景中每个游戏对象都有一个Transform组件,它用来保存和操作游戏对象的位置、旋转和缩放。

Transform组件有很多的属性和方法。下面先来看一下Transform的属性。

表示位置的:position:       相对于世界的位置   

                      localposition:相对于父物体的位置 

         这个属性能改变物体的位置:transform.position=new vector3(1,0,0);//朝着x轴移动

 表示旋转四元数:rotation:相对于世界

                              localerotation:相对于父物体

表示欧拉角度:eulerAngles:相对于世界的旋转角度

                          localEulerangles:相对于父物体的旋转角度

        这个属性能改变物体的旋转:transform.eulerAngles=new vector3(1,0,0);//绕着x轴旋转。

表示缩放:lossyscale:相对于世界的缩放

                   localscale:相对于父物体的缩放

还有一些表示方向的:forward:表示z轴的方向,up表示y轴的方向,right表示x轴的方向。

还有获取子对象个数的getchild属性,表示对象的transform是否被改变的haschanged,返回对象的父物体的parent,从自身坐标转化为世界坐标的localToWorldMatrix,从世界坐标转换为自身坐标的worldTolocalMatrix,表示或者指定当前游戏对象在hierarchy面板处于第几层的的hierarchyCapacity,表示对象在hierarchy面板处于第几层的hierarchyCount    等等。

下面是transform类提供的一些常用的方法。

表示物体朝着某方向移动的translate

                   transform.translate(transform.forward);//物体朝着x轴移动。

表示物体朝着某方向旋转的rotate

                   transform.rotate(transform.forward);//物体朝着x轴旋转。

表示物体的z轴始终指向目标物(注释旋转)的lookat:

                   transform.lookat(target);//物体朝朝向target点

表示物体绕着某点某方向旋转的rotatearound(围绕旋转):

                   transform.rotatearound(Vector3.zero, Vector3.forward, 20 * Time.deltaTime);//物体朝着某点某方向旋转

查找游戏对象系列方法:

                   find(name/路径):通过名字或者路径查找对象。

                   getchild(index):根据索引找子对象。

下面这个例子是用transform提供的方法查找游戏物体:

 
public void OnGUI()
    {
       
        if (GUILayout.Button("GetChild"))
        {
            Transform child = GetChild(this.transform, "Cylinder (1)");
            if (child != null)
            {
                child.GetComponent<MeshRenderer>().material.color = Color.green;
            }
        }
    }

Boold FindMinEnemyBlood(Boold[] allenemy)
    {
        Boold minenemy = allenemy[0];
        for (var i = 1; i < allenemy.Length; i++)
        {
            if (allenemy[i].boold < minenemy.boold)
            {
                minenemy = allenemy[i];
            }
        }
        return minenemy;
    }

     

Set系列:
     SetParent:设置父物体(给对象一个父物体)
    需要指定父物体的对象.SetParent(父对象)。
    
    DetachChildren:解除父子关系。
    父对象.DetachChildren().

    SetAsFirstSibing:设置对象到同级列表中的第一个    
    SetAsLastSibing:设置对象到同级列表中的最后个
    SetSibingIndex:设置对象到同级列表中的指定索引值

    GetSibingIndex:获取对象在统计列表中的索引值。

转换系列:
    TransformDirection(方向)变换方向:将对象的方向从自身坐标转换到世界坐标。
    InverseTransformDirection(方向) 反向变换方向:将对象的方向从世界坐标转换到自身坐标。
    TransformPoint(位置) 变换点:将对象的位置坐标点从自身坐标转换到世界坐标。
    InverseTransformPoint(位置) 反响变换点:将对象的位置坐标点从世界坐标转换到自身坐标。
    TransformVector(向量) 变换向量:将对象的方向和大小从局部坐标转换到世界坐标。
    InverseTransformVector(向量) 变换向量:将对象的方向和大小从世界坐标转换到自身坐标。

    IsChildOf(transform parent) 是否是子对象:游戏对象是否是parent的子对象,返回bool值

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值