zoukankan      html  css  js  c++  java
  • 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反变换一个方向向量!

                        如果有错误的地方,还请高手指教,多多学习! 

       

                        

                      

  • 相关阅读:
    2017-2018-1 课表
    所编裴书练习参考解答封面 [购买了书的同志记得一定要邮件联系, 并加我微信, 方便更正错误. 这里更新有时会慢, 或者懒得弄.]
    人工智能图片放大
    猜15个名人
    Excel 当前行高亮
    2014年至今的博文目录(更新至2019年1月7日,2017篇)
    拓扑学中凝聚点的几个等价定义
    江苏省2017年高等数学竞赛本二试题(含解答)
    裴礼文数学分析中的典型问题与方法第4章一元函数积分学练习
    2017年华东师范大学数学竞赛(数学类)试题
  • 原文地址:https://www.cnblogs.com/alongu3d/p/transform1.html
Copyright © 2011-2022 走看看