最近才开始学Unity3d,被这个本地空间和世界空间搞得有点晕头转向的。于是花了一点时间随便写了一点代码加深理解。代码如下:

 public class MoveX : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown())
{
var two = new Vector3(, , );
var localSpace = transform.InverseTransformPoint(two);
var worldSpace = transform.TransformPoint(localSpace);
log(localSpace);
Debug.Log("-----空间分割线------");
log(worldSpace);
}
} void log(Vector3 v)
{
Debug.Log(string.Format("x={0} y={1},z={2}", v.x, v.y, v.z));
}
}

在unity3d Editor中,我们创建一个cube的GameObject,它的坐标是(3,3,3),然后MoveX脚本赋给此cube。

首先我创建了一个三维坐标都是2的点,然后把它传给了transform.InverseTransformPoint(two),通过打印localSpace坐标点我们可以看到的信息为:x=-1 y=-1,z=-1,从这我们可以看出InverseTransformPoint的意思是:将transform的坐标作为原点(即世界空间的(3,3,3)),计算two坐标(即世界空间的(2,2,2))相对于transform原点的坐标。如下图所示:

接下来我将上面计算出来的相对于transform的坐标的localSpace赋给了transform.TransformPoint(localSpace),然后计算得到一个worldSpace坐标,通过打印worldSpace坐标点我们可以看到的信息为:x=2 y=2,z=2。刚好还原得到我们原来two坐标点。

最新文章

  1. c++设计模式之单例模式下的实例自动销毁(垃圾自动回收器)
  2. 博客整理——Alpha版冲刺
  3. php给客户端返回数据注意。
  4. 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
  5. spring WebSocket详解
  6. WebClient上传音频文件
  7. 关于Listview布局的一点经验
  8. 多线程 (三)iOS中的锁
  9. web sql Database
  10. Qt5遇到的问题
  11. sublime3配置及插件安装
  12. flex4 list 自动适应高度
  13. kubernetes进阶(03)kubernetes的namespace
  14. MySQL 大数据量快速插入方法和语句优化
  15. Android中实现gif动画
  16. linu系统文件授权命令
  17. Nginx反向代理的基本配置
  18. linux git clone 指定分支
  19. URL的解析,C语言实现
  20. mybatis学习(一)----入门

热门文章

  1. Stopwatch类学习
  2. django notes 四: Writing views
  3. Logback 学习笔记
  4. Visual Studio、.net framework、CLR与JDK、JRE、JVM、Eclipse
  5. 相片Exif协议
  6. 根据Time Protocol从NIST Internet Time Servers获取准确时间
  7. 如鹏网学习笔记(十四)ASP.NET
  8. mysql 登录报错:ERROR 1045 (28000)
  9. ASP.NET 表单验证方法与客户端(浏览器)服务器交互机制的故事
  10. git远程易错点