Unity使用了几种不同的坐标系统,分别如下:

1.屏幕坐标(Screen Space):屏幕坐标是以像素来定义的,以屏幕左下角为(0, 0)点,右上角为(Screen.width, Screen.height)点。如下图所示:

Screen Space.png

当你用点击手机屏幕时,你会得到一个屏幕坐标(x, y),注意,屏幕坐标只有x和y两个维度。Vector2 pos = Input.GetTouch(0).position;可以获得单个手指触摸的屏幕坐标。

2.绘制GUI界面的坐标系:这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。

GUI Space.png

3.世界坐标(World Space):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。

World世界坐标:从前视图front看:
·X轴正方向指向(屏幕)右侧。
·Z轴正方向指向(屏幕)上方。
·Y轴正方向背离你。

1. position是根据世界原点为中心

2. localPosition是根据父节点为中心,如果没有父节点,localpositon和position是没有区别的

3.选中一个物体左上角Global和Local切换看物体世界坐标轴和本地坐标轴

4.视口坐标(View Port Space): 视口坐标是相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。

View视图坐标:在默认坐标系下,在所有的(正交)视图中X,Y,Z三个轴是相同的。当你使用这个坐标系移动一个对象时,你所移动的对象与视口空间有如下关系。
·X轴总是指向(屏幕)右侧。
·Y轴总是指向(屏幕)上方。
·Z轴总是垂直屏幕指向你。

• 世界坐标→屏幕坐标:camera.WorldToScreenPoint(transform.position);这样可以将世界坐标转换为屏幕坐标。其中camera为场景中的camera对象。

• 屏幕坐标→视口坐标:camera.ScreenToViewportPoint(Input.GetTouch(0).position);这样可以将屏幕坐标转换为视口坐标。其中camera为场景中的camera对象。

• 视口坐标→屏幕坐标:camera.ViewportToScreenPoint();

•视口坐标→世界坐标:camera.ViewportToWorldPoint();

http://answers.unity3d.com/questions/256817/about-world-space-and-local-space.html
http://www.cnblogs.com/martianzone/p/3371789.htm

5. unity2d坐标 笛卡尔坐标系,00点是在正中心,X轴向右是正,向左是负。Y轴向上是正,向下是负。

using UnityEngine;
using System.Collections;

public class FishCommon : MonoBehaviour {

private float camHalfHeight;
private float camHalfWidth;

void Awake()
{
this.camHalfHeight = Camera.main.orthographicSize;
this.camHalfWidth = Camera.main.aspect * camHalfHeight;
}

void Update () {
//手指 或者 鼠标的坐标传进去
Move(Input.mousePosition);
}

public void Move(Vector2 postions){
Move(new Vector3(postions.x,postions.y,0));
}
public void Move(Vector3 postions){
//在这里进行坐标的换算
transform.position = ScreenToWorld(postions);
}

private Vector3 ScreenToWorld(Vector3 postion){

return Camera.main.ScreenToWorldPoint(postion);
}
}

最新文章

  1. 标准C++ 字符串处理增强函数
  2. margin的BUG(2)
  3. CodeForces Round #285 Div.2
  4. Eclipse 经验之谈(一):快速打war包
  5. Protel99se教程五:protel99se的自动布线
  6. 【.net 深呼吸】项目中是否有必要删去多余的引用
  7. "《算法导论》之‘队列’":队列的三种实现(静态数组、动态数组及指针)
  8. 设计模式 | 原型模式(prototype)
  9. luoguP4035
  10. memcache 安装及使用
  11. 东师理想云平台异步任务处理系统V2.0重构思路
  12. MySQL InnoDB Engine--数据预热
  13. 前端通信:ajax设计方案(八)--- 设计请求池,复用请求,让前端通信快、更快、再快一点
  14. 自定义linux命令
  15. java8 新特性 Stream流 分组 排序 过滤 多条件去重
  16. css 更改input radio checkbox的样式
  17. pageadmin自助建站 网站目录权限的设置方法
  18. [ActionScript 3.0] SharedObject的用法简介
  19. 第14天:逻辑运算符、if、for语句
  20. GTD实用指南(转载)

热门文章

  1. redis05----Redis 中的事务
  2. leetcode 677. Map Sum Pairs
  3. CSS中的那点事儿(一)--- CSS中的单位2
  4. YTU 1055: 输入字符串以及输出
  5. YTU 2832: 使用指针访问数组元素--程序填空
  6. css盒子模型详解一
  7. (转)windows下的Expdp、Impdp使用
  8. 【NOIP 2003】 加分二叉树
  9. JAVA Synchronized (二)
  10. bzoj3198