unity 坐标系转换_Unity的几种坐标系及相互转换

介绍

1.WorldSpace(世界坐标系)

当我们向场景中添加物体时,他们都是以世界坐标系的方式的方式显示在场景中的

通过transform.position可以得到它在世界中的坐标位置,transform.position(Vector3)可以设置它在世界中的位置(c#不支持单独设置x y z);

2.ScreenSpace(屏幕坐标系)

以像素为单位,左下角是(0,0),右上角为(screen.width, screen.height),Z的位置是以相机的世界单位来衡量//及物体离相机远近

注:鼠标位置坐标属于屏幕坐标,Input.mousePosition可以获得鼠标坐标,手指触摸屏也为屏幕坐标,Input.GetTouch(0).position可以获得单个手指的手机屏幕坐标

说点题外话

unity中Input.GetMouseButtonDown(0)代表按下鼠标左键,Input.GetMouseButtonDown(1)代表鼠标右键Input.GetMouseButtonDown(2)代表滚轮中间。

3.ViewPort(视口坐标)

左下角为(0, 0),右上角为(1, 1)在一些画中画效果中常用到,比如主视口为FPS,然后右下角有一个小窗口为第三人称视图。

4.绘制GUI界面的坐标系(自从有了新版UI之后这个也很少用到)

这个坐标系与屏幕坐标系类似,不同的是左上角为(0,0),右下角为(screen.width, screen.height)这样绘制起来更方便。

5.桌面坐标系(系统坐标系)

这个坐标系与屏幕坐标系类似,不同的是该坐标系以桌面的左上角为(0,0),桌面右下角为桌面分辨率的宽和桌面分辨率的高

用SetCursorPos设置鼠标坐标,用GetCursorPos得到鼠标坐标。

C#中:

命名空间 using System.Runtime.InteropServices;

导入库 [DllImport("user32.dll")]

函数原型 public static extern int SetCursorPos(int x, int y);

public static extern bool GetCursorPos(ref int x, ref int y);

******************************************************

转换

1.物体的世界坐标到屏幕坐标的转换

C#

1

Camera.main.WorldToScreenPoint(cb.transform.position);//cb代表场景中的一个方块物体,得到的vector3中的z为相机离cube物体的远近

2.屏幕坐标转世界坐标

C#

1

Vector3world=Camera.main.ScreenToWorldPoint(Input.mousePosition);//及鼠标单击位置距世界中心(0,0,0)点的距离

3.屏幕坐标转视口坐标

C#

1

Vector3viewCoor=Camera.main.ScreenToViewportPoint(Input.mousePosition);//底层原理无非就是Input.mousePosition.x/Screen.width,Input.mousePosition.y/Screen.Height;

4.视口坐标转屏幕坐标

C#

1

Vector3screen=Camera.main.ViewportToScreenPoint(newVector3(0.2f,0.3f,0));//注意视口左下角为(0,0),右上角为(1,1);

5.视口坐标到世界坐标

C#

1

Vector3word=Camera.main.ViewportToWorldPoint(newVector3(0.2f,0.3f,0));//注意当只改变一个z值时转化出的世界坐标的x,y也会发生相应的变化

6.屏幕坐标转射线

C#

1

2

3

4

5

6

7

8

9

if(Input.GetMouseButtonDown(1))

{

Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);// 从鼠标位置发送射线

RaycastHithit;

if(Physics.Raycast(ray,outhit,100,1<

{

Debug.Log(hit.collider.name);

}

}

6.视口坐标转射线

C#

1

2

3

4

5

6

7

8

9

if(Input.GetMouseButtonDown(1))

{

Rayray=Camera.main.ViewportPointToRay(newVector3(0.5f,0.5f,0));// 从屏幕中央发送射线

RaycastHithit;

if(Physics.Raycast(ray,outhit,100,1<

{

Debug.Log(hit.collider.name);

}

}

最后编辑:2017-12-05作者:网虫虫

分享是一种快乐;

分享是一种美德;

分享是一种幸福!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

get到一个生气后的牵手方式!太可爱了

1 公司新聘的出纳&#xff0c;大家看看尽不尽职&#xff1f;2 柯基&#xff1a;腿长有啥用啊3 男友力爆表的小螃蟹4 一滴水的下落&#xff0c;原来如此有条有理5 内容太过真实6 get到一个生气后的牵手方式7 你们那里的这条街叫什么&#xff1f;你点的每个赞&#xff0c;我都认真…

python flask框架是什么_Flask框架是什么?带你安装运行第一个Flask程序

1 了解框架 Flask作为Web框架&#xff0c;它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的&#xff0c;是为了利用互联网交流工作文档。 1.1 一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序实…

还在做互联网创业梦?醒醒!

阅读本文大概需要7分钟。最近国家在互联网领域动作不少&#xff1a;在线教育K12领域被全面整治、阿里被罚款182亿、巨头的垄断和无序扩张遭遇严格限制&#xff0c;大部分互联网上市公司股价一泻千里。身边不少大佬原本身价几千万的期权股票&#xff0c;一瞬间近乎清零&#xff…

android自动登录不过登陆界面,【教程】Android 记住密码和自动登录界面的实现

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼登录界面源码&#xff1a;LoginActivity.javapublic class LoginActivity extends Activity {private EditText userName, password;private CheckBox rem_pw, auto_login;private Button btn_login;private ImageButton btnQuit;p…

钻石2 D2 让你的diamond2待机2天,甚至2天以上的方法(绝对不是购买电池)

http://bbs.23dopod.com/thread-13801-1-1.html 钻石2 D2 让你的diamond2待机2天&#xff0c;甚至2天以上的方法&#xff08;绝对不是购买电池&#xff09; 钻石2的性能在这里就不说了&#xff0c;坛友自己都知道但是&#xff0c;钻石2的待机性能的确继承了多普达的传统&#x…

把 14 亿中国人民都拉到一个微信群里在技术上能实现吗?

全世界只有3.14 % 的人关注了爆炸吧知识作者丨Max 链接&#xff1a;zhihu.com/question/293021546/answer/487157602把 14 亿中国人民都拉到一个微信群里在技术上能实现吗&#xff1f;先说结论&#xff1a;也许可以实现&#xff0c;但你会什么都看不见。根据 2017 年《微信数据…

python每天定时9点执行_python 定时器每天就执行一次的实现代码

1.实现功能 编写python脚本一直运行&#xff0c;判断当下是否是新的一天&#xff0c;如果是就执行一次任务代码 2.具体实现代码 #-*-coding:utf-8 -*- __author__ Administrator import os,threading,time curTimetime.strftime("%Y-%M-%D",time.localtime())#记录当…

使用C#为.NET Interactive开发自定义扩展

在前面的文章中&#xff0c;我们介绍了如何在.NET Interactive notebook绘制图表和执行SQL。那么&#xff0c;能不能为.NET Interactive开发交互功能呢&#xff1f;今天&#xff0c;我们就来演示如何实现。创建项目新建类库项目Demo1Extension&#xff0c;需要引用Nuget包Micro…

zabbix snmp自定义OID nginx监控实例(55)

为什么80%的码农都做不了架构师&#xff1f;>>> 为什么要自定义OID&#xff1f; 前面的文章我们已经讲过zabbix如何使用snmp监控服务器&#xff0c;但是他有一个很明显的局限性&#xff1a;只能监控定义好的OID项目&#xff0c;假如我们想知道nginx进程是否在运行…

(转帖)对抽象编程:接口和抽象类

[你必须知道的.NET] 第二回&#xff1a;对抽象编程&#xff1a;接口和抽象类-王涛 [你必须知道的.NET] 第二回&#xff1a;对抽象编程&#xff1a;接口和抽象类 Author&#xff1a;王涛 Date&#xff1a;2007-4-12 ©2007 Anytao.com 转贴请注明出处&#xff0c;留此信息。…

mysql从节点参数配置

官网地址&#xff1a;MySQL :: MySQL Replication :: 2.6.3 Replica Server Options and Variables 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 复制 / ... / 副本服务器选项和变量 2.6.3 副本服务器…

Windows 7各版本比较

http://windows.microsoft.com/zh-cn/windows7/products/compare家庭普通版 家庭高级版专业版 旗舰版 桌面体验全新的 Windows 任务栏∨∨∨∨实时任务栏缩略图预览∨∨∨∨快速显示桌面∨∨∨∨自定义通知区域图标∨∨∨∨桌面小工具∨∨∨∨半透明玻璃窗口∨∨∨Aero 桌…

实验四 图的遍历算法设计与实现

一、实验名称&#xff1a;图的遍历算法设计与实现 二、实验目的&#xff1a; 1.掌握图的深度优先遍历的算法。 2.掌握图的广度优先遍历的算法。 3.实验章节&#xff1a;算法设计与分析 第四章 三、实验内容。实验问题和程序运行结果 第一部分 广度优先遍历算法 完善下列程序&am…

jpa 定义中间表实体_Spring Data JPA实体详解

1. Spring Data JPA实体概述JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系数据库的映射&#xff0c;此类Java对象称为JPA实体或简称实体。实体通常与底层数据库中的单个关系表相关联&#xff0c;每个实体的实例表示数据库表格中的某一行。2. Spring Data JPA实体管理…

为什么魂斗罗只有128KB却可以实现那么长的剧情?

全世界只有3.14 % 的人关注了爆炸吧知识现代程序员A和1980年代游戏程序员B的对话&#xff1a;A&#xff1a;为什么你用128KB能实现这么多画面、音乐、动画&#xff1f;B&#xff1a;128KB还不够么&#xff1f;其实为了表现力已经相当奢侈了&#xff0c;加了很多不重要的细节。A…

asp.net core 6 新特性,支持HTTP/3 端点发布

???? 序言Http3 协议构建在UDP的基础上&#xff0c;是的&#xff0c;就这么神奇&#xff0c;以前被誉为不稳定大神的UDP&#xff0c;现在承担起可靠通讯协议的底层协议。为了消除UDP的不确定性&#xff0c;在UDP协议之上&#xff0c;新增了QUIC协议。使用QUIC协议代替TCP协…

imac android studio,Mac安装Android Studio的时候忘记安装Avd Manager怎么办?

工作最近得闲&#xff0c;准备学下React-Native。MAC下安装Android Studio的时候&#xff0c;忘记安装Avd Manager。无奈之下删除Android Studio准备重装&#xff0c;却发现有很多配置文件残留在系统上&#xff0c;导致再次重装的时候完全跳过了Avd Manager的配置。在网上找了一…

浮点数赋值给整数_初学者专题:变量和赋值

作者&#xff1a;老齐对于初学Python者&#xff0c;除了看书(《跟老齐学Python&#xff1a;轻松入门》或者《Python大学实用教程》&#xff0c;均为电子工业出版社出版)、或者看视频(网易云课堂、CSDN上均有老齐的视频课程)&#xff0c;还要进行专题性总结。比如本文&#xff0…

分析android动画模块[转]

2019独角兽企业重金招聘Python工程师标准>>> 作者: 刘鹏 日期: 2009-03-07 Android 平台提供了两类动画&#xff0c;一类是 Tween 动画&#xff0c;即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果&#xff1b;第二类是 Frame 动画&#xff0c;即…

[转载]锦上添花Sybase数据库题目大网罗-4

Q.如何点窜IP地点窜改后的interfaces文件&#xff1f; A.布置SYBASE Adapive Server的呆滞IP地点窜改后, 应点窜 interfaces 文件及有关的设置。   假设 interfaces 文件中哄骗的是呆滞名而不是 IP 地点, 则不需求变化。 但假设客户端连合效力器使   用的是效力器的 转载于…