Unity笔记-10-坐标系统
坐标系统
世界坐标系(WorldSpace)
整个场景的固定坐标,在游戏场景中表示每个物体的固定位置和方向
物体坐标系(LocalSpace)
每个物体独立的坐标系,原点为模型轴心点,随着物体的旋转或者移动而改变,表现物体间的相对位置和方向
屏幕坐标系(ScreenSpace)
以像素为单位,屏幕左下角为(0,0)
原点,右上角为屏幕的高度和宽度,z
表示到相机的距离
表示物体在屏幕中的位置
视口坐标系(ViewportSpace)
屏幕左下角为原点,右上角为(1,1)
,z
为到相机的距离,表示物体在摄像机中的位置
坐标系转换
物体坐标系—>世界坐标系
transform.forward
在世界坐标系表示物体的正前方,一般为z
轴朝向
transform.right
在世界坐标系中表示物体的正右方,一般为x
轴朝向
transform.up
在世界坐标系中表示物体的正上方,一般为y
轴朝向
transform.TransformPoint
转换点,受变换组件位置,旋转或缩放影响
transform.TransformDirection
转换方向,受变换组件旋转影响
transform.TransformVector
转换向量,受变换组件旋转和缩放影响
世界坐标系—>物体坐标系
transform.InverseTransformPoint
转换点,受变换组件位置,旋转,缩放影响
transform.InverseTransformDirection
转换方向,受变换组件旋转影响
transform.InverseTransformVector
转换向量,受变换组件旋转和缩放影响
世界坐标系<—>屏幕坐标系
Camera.main.WorldToScreenPoint
该点将从世界坐标系转化到屏幕坐标系上
Camera.main.ScreenToWorldPoint
该点将从屏幕坐标系转化到世界坐标系上
世界坐标系<—>视口坐标系
Camera.main.WorldToViewportPoint
该点将从世界坐标系转化到视口坐标系
Camera.main.ViewportToWorldPoint
该店将从视口坐标系转化到世界坐标系
应用:物体限制在屏幕中移动
要求:
物体移动到屏幕左端会自动从右端出西安,其他方向同理
local = cameraMain.WorldToViewportPoint(transform.position);
if (local.x > 1)
{
local.x = 0;
}
if (local.x < 0)
{
local.x = 1;
}
if (local.y > 1)
{
local.y = 0;
}
if (local.y < 0)
{
local.y = 1;
}
transform.position = cameraMain.ViewportToWorldPoint(local);
将物体坐标转化为视口坐标,通过判断视口坐标判断物体是否走出屏幕,如果走出则赋值给他另外一端的坐标,注意在视口坐标系下赋值后要转化回世界坐标重新赋值给物体