Unity3d Transform


                                                   Unity3d 變換(Transform)

             首先,Transform是個很重要的東西,把這個掌握好了,在以后的編程中也可以輕松很多!

             1.循環遍歷某gameobject的子物體並且刪除子物體

                using UnityEngine;

                using System.Collections;

                public class FindChilds:MonoBehaviour{

                         //The Start function is called after all Awake functions on all script instances have been called.

                        //Start方法在Awake方法之后,在其它所有方法之前調用

                          void Start()

                          {

                                //循環遍歷子物體

                                 foreach(Transform temp in transform)

                                 {

                                        //打印出子物體的名字

                                        Debug.Log(temp.name);

                                        //刪除子物體

                                        Destory(temp.gameObject);

                                 }

                          }

                 2.繞另一個物體旋轉

                   function RotateAround (point : Vector3, axis : Vector3, angle : float) : void

                   其中point是圍繞旋轉的中心點,axis是繞着旋轉的軸(x軸,y軸,z軸),angle是旋轉的角度

                   我個人的理解是,以point點為中心,繞着axis軸旋轉,angle就是角度!

                 3.說一下局部坐標和世界坐標

                    局部坐標就是本地坐標,世界坐標就是全局坐標!

                    比如我們有一個點,Vector3.forward(0,0,1)這個是本地坐標,准確的說是向量,也可以說是步長,可以用Transform.TransformDirector(0,0,1),我用個等式表示!

                   等式一:transform.Translate(Vector3.forward)=物體的上一幀坐標+transform.TransformDirector(0,0,1);

                  如果這個物體的三個軸的旋轉值都為0,縮放比例都為1,那么

                  transform.TransformDirector(任何三維點)=任何三維點

                  也就是說 坐標(transform.position)並沒有參加變換

                   等式二:transform.Translate(Vector3.forward)=物體的上一幀坐標

transform.localToWorldMatrix*Vector3.forwad;

                             如果這個物體的三個軸的旋轉值都為0,縮放比例都為1,那么

 

                  transform.TransformDirector(任何三維點)=任何三維點

                  也就是說 坐標(transform.position)並沒有參加變換

 

                  等式三:              tranform.Translate(Vector3.forward)=transform.TransformPoint(0,0,1);

也可以是,transform.position=transform.TransformPoint(0,0,1)也實現了不斷向自己的z軸前進的效果!

                  坐標(transform.position)參加了變換

                  等式一與等式二 都是變換了一個步長,所以需要加上原先的坐標,而等式三,則不需要,他就直接計算了原來的位置加上一個步長!

                 4.反變換

                    就是把世界坐標的點或者方向向量變換回到本地坐標

                    也就是 從世界坐標 轉換到 本地坐標

                    比如,可以把世界坐標中有一個點,可以Transform.InverseTransformDirection方法,把世界坐標中的這個點變換成 某個物體的本地坐標的點!

                   可InverseTransformDirection反變換一個方向向量!

                    如果有錯誤的地方,還請高手指教,多多學習! 

   

                    

 

                  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM