unity中四种坐标系
- 世界坐标
- 自身坐标
- 屏幕坐标
- 视口坐标
世界坐标
up 世界坐标系的Y轴单位向量
right 世界坐标系的X轴单位向量
forward 世界坐标系的Z轴单位向量
可以使用Transform.InverseTransformPoint执行从世界到本地坐标的转换
cam = Camera.main.transform;
Vector3 cameraRelative = cam.InverseTransformPoint(transform.position);
自身坐标
自身坐标到世界坐标
transform.TransformPoint(Vector3.right * 2)
请注意,返回的位置受比例影响。如果要处理方向向量,请使用Transform.TransformDirection。
屏幕坐标
float hor = Input.GetAxis("Horizontal");
float ver = Input.GetAxis("Vertical");
hor *= moveSpeed * Time.deltaTime;
ver *= moveSpeed * Time.deltaTime;
//世界坐标转屏幕坐标系
Vector3 screentPos = Camera.main.WorldToScreenPoint(transform.position);
//如果移动到最下边 并且 还想向下 或者 移动到最上边 并且 还想向上
if (screentPos.y <= 0 && ver < 0 || screentPos.y >= Screen.height && ver >0)
ver = 0;//停
this.transform.Translate(hor, 0, ver);
视口坐标:摄像机的坐标
参数在[0,1]之间,左下角为坐标原点(0,0)
x表示scene.width
y表示scene.height
w:视口占屏幕宽度比例
h:视口占屏幕高度比例