unity中关于transform的小结

来源:互联网 发布:淘宝人生笔趣阁 编辑:程序博客网 时间:2024/05/20 10:21
Local Space --> World Space


transform.forward 在世界坐标系中表示物体正前方。 
transform.right 在世界坐标系中表示物体正右方。 
transform.up 在世界坐标系中表示物体正上方。 
 
transform.TransformPoint  
转换点,受变换组件位置、旋转和缩放影响。 
transform.TransformDirection  
转换方向,受变换组件旋转影响。 
transform.TransformVector  
转换向量,受变换组件旋转和缩放影响


World Space --> Local Space


transform.InverseTransformPoint 
转换点,受变换组件位置、旋转和缩放影响。 
transform.InverseTransformDirection  
转换方向,受变换组件旋转影响。 
transform.InverseTransformVector  
转换向量,受变换组件旋转和缩放影响。


World Space <--> Screen Space


Camera.main.WorldToScreenPoint  
将点从世界坐标系转换到屏幕坐标系中 
Camera.main.ScreenToWorldPoint 
将点从屏幕坐标系转换到世界坐标系中

World Space <--> Viewport Space


Camera.main.WorldToViewportPoint 
将点从世界坐标系转换到视口坐标系中 

Camera.main.ViewportToWorldPoint 
将点从屏幕坐标系转换到世界坐标系中


点乘的应用:对于标准化过的向量,点乘结果等于两向量夹角的余弦值。
float dot =Vector3.Dot(a.normalized, b.normalized); 
float angle = Mathf.Acos(dot) * Mathf.Rad2Deg 


叉乘的应用:创建垂直于平面的向量;判断两条向量相对位置。 
Vector3 cross=Vector3.Cross(a.normalized, b.normalized); 

float angle =Mathf.Asin(cross.magnitude) * Mathf.Rad2Deg;


float dot = Vector3.Dot(t1.position.normalized, t2.position.normalized);float angle = Mathf.Acos(dot) * Mathf.Rad2Deg;Vector3 cross = Vector3.Cross(t1.position, t2.position);if (cross.y > 0)angle = 360 - angle;print(angle);