unity------各种坐标理解
本人学生一枚,刚接触Unity3D,若有理解得不对的地方,还望各路大神不吝赐教~
unity中的坐标系统包括世界坐标(World Space),屏幕坐标(Screen Space),视口坐标(View Space)以及GUI坐标系统。
世界坐标(World Space)
场景中添加的对象,它们是以世界坐标显示在场景中,可以通过代码transform.position获得该对象的世界坐标,那么我们在检视面板(Inspector)中看到的Position的值在对象没有父物体时,这个值和transform.position得到的结果一致的,若该对象有父物体,那么检视面板中(Inspector)看到的即为相对于父物体的相对坐标位置,这样通过transform.position得到的值自然就不一样了。总之,通过transform.position得到的都是对象的世界坐标。在对象存在父物体的情况下,若想要得到该对象在检视面板(Inspector)中的值,可以通过transform.Localposition得到。
屏幕坐标(Screen Space)
屏幕坐标是通过像素来定义的,屏幕坐标的坐标系以屏幕左下角为(0,0)点,右上角为(Screen.width,Screen.height),屏幕坐标为3维坐标,z的大小由相机的世界位置来定义。通过Input.mousePosition得到的是屏幕坐标,屏幕坐标的数值只与屏幕的大小有关,跟分辨率没有关系。
视口坐标(View Space)
视口坐标标准化后的屏幕坐标,它的坐标原点同样是左下角为(0,0)点,只不过右上角为(1,1)点,若对象处在场景的正中间,则对象的视口坐标为(0.5,0.5),与屏幕坐标一样,视口坐标也是一个3维的,它的z方向的数值由相机的世界位置来决定。
GUI坐标系
GUI坐标系主要在通过OnGUI方法绘制屏幕UI界面时运用较多,GUI坐标系是一个2维坐标系,与屏幕空间类似,所表示的范围也是整个屏幕空间范围,只不过GUI坐标的坐标原点在左上角,即左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
坐标之间的转换
世界坐标通过transform.position获得
局部坐标通过transform.Localposition获得
世界坐标与屏幕坐标之间的转换
Camera.main.ScreenToWorldPoint(Vector 3) ——屏幕坐标转换到世界坐标,其中的main为主相机,当然也可以为场景中其他相机
Camera.main.WorldToScreenPoint(transform.position)——世界坐标转换到屏幕坐标 ,其中的main为主相机,当然也可以为场景中其他相机。这里附带一个鼠标拖拽物体的代码,其中主要就是世界坐标与屏幕坐标之间转换
unity------各种坐标理解的更多相关文章
- Unity 本地坐标到世界坐标,世界坐标到本地坐标
世界=>本地 public GameObject mTarget; public GameObject mPar; //这个注意一定要是mTarget的第一父物体. // Use this fo ...
- 【Cesium】坐标理解(转)
https://blog.csdn.net/qq_34149805/article/details/78393540 1. 经纬度转换为世界坐标 第一种方式:直接转换: Cesium.Cartesia ...
- 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...
- unity射线碰撞检测+LayerMask的使用
射线在unity中是个很方便的东西,对对象查找.多用于碰撞检测(如:子弹飞行是否击中目标).角色移动等提供了很大的帮助,在此做个总结与大家分享下 ,若有不足欢迎吐槽 好了,话补多说啦,直接进入主题: ...
- Unity 相关经典博客资源总结(持续更新)
就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: Unity官方脚本 点评:这个不用说了,最核心的内容,理解整个Unity引擎的方方面面,梳理结构. Unity ...
- Unity中Mesh分解与边缘高亮加上深度检测
一个比较简单的需求,不过遇到些坑,记录下. 房间有多个模型,每个模型可能多个SubMesh,点击后,需要能具体到是那个SubMesh,并且在这个SubMesh上显示边缘高光,以及能个性这单个SubMe ...
- 【转】Unity 相关经典博客资源总结(持续更新)
原文:http://blog.csdn.net/prothi/article/details/20123319 就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: ...
- Unity之MVC 模式
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...
随机推荐
- Linux查看系统cpu个数、核心书、线程数
现在cpu核心数.线程数越来越高,本文将带你了解如何确定一台服务器有多少个cpu.每个cpu有几个核心.每个核心有几个线程. 工具/原料 Linux服务器 方法/步骤 查看物理cpu个数 grep ...
- Python3之pymysql导入mysql
$cat insert.py #!/usr/bin/python # -*- coding: UTF-8 -*- import os import sys import datetime import ...
- How To Install Java with Apt-Get on Ubuntu 16.04
Introduction Java and the JVM (Java's virtual machine) are widely used and required for many kinds o ...
- Android 自动化测试
Python +Android +uiautomator test 在init中定义的方法 uiautomator 该模块是android的一个python包装uiautomator测试框架 ...
- PHP中的WebService
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语言. ...
- C#学习笔记(21)——C#获取文件夹下的所有文件的文件名
说明(2017-7-30 23:11:59): 1. 文件处理老是忘,学的不扎实. 2. 路径用Directory,文件名用file. 3. 我也推荐用第二种方法,可以拿到文件的所有信息,比如扩展名什 ...
- go语言可变参数的坑
0x00 前提 对可变参数不了解的同学,可以先看这篇文章可变参数终极指南 0x01 第一个坑 不能通过空接口类型向可变参数传递一个普通的切片 ,需要将普通切片转换为空接口切片 0x02 第二个坑 可变 ...
- Unity2017与Visual Studio2017的兼容问题
Unity2017中新建脚本后,用Visual Studio2017打开发现不兼容. 方法一:管理员权限运行Unity. 方法二:打开Visual Studio Installer,下载Unity相关 ...
- iis部署webservice问题集合
一.添加网站 具体步骤:打开控制面板,选择管理工具,打开管理工具. 打开管理工具后,打开第二个internet信息服务(iis)管理器. 打开后的界面如下: 右击网站,添加网站后,弹出“添加网站”选项 ...
- gdb基本命令(非常详细)
gdb基本命令 本文介绍使用gdb调试程序的常用命令. 主要内容: [简介] [举例] [其他] [简介] ============= GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...