Unity 3D 的四种坐标系

摘要:
使改变位置可以获得位置坐标。使用UnityEngine;使用系统。收藏;Publiclastest:MonoBehavior{//图像publicTexturimg;//图像类型//存储鼠标privateVector2pos的位置坐标;//二维坐标类型void OnGUI(){//如果{pos=Input.mousePosition;}//左键单击鼠标以获取当前鼠标位置绘图图片GUI DrawTexture;}}案例2-使用UnityEngine进行坐标显示和坐标转换(这是用于触摸);使用系统。收藏;Publiclastest:MonoBehavior{//场景的摄影机,将其拖放到publicCameracamera中;//场景的对象privateGameObjectobj;voidStart(){//初始化obj=GameObject.Find;}作废更新(){//如果{print;print;print;print;printGUI。方框;//从左上角坐标开始,生成矩形GUI。按钮总长度为100,总宽度为90;GUI。按钮C#正则表达式正则表达式是与输入文本匹配的模式。

1, World Space(世界坐标):

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

2, Screen Space(屏幕坐标):

以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。

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

ViewPort Space(视口坐标):视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。(用的不多,反正我暂时没有用到~呵呵~)

3, 绘制GUI界面的坐标系:

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

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

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

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

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

案例1——在鼠标点击的位置上绘制一张图片出来(关于绘制GUI界面坐标系与屏幕坐标系之间的关系)。

 using UnityEngine;  

 using System.Collections;  

 public class test : MonoBehaviour   {          

      //图片    

    public Texture img;      //图片类型

     //储存鼠标的位置坐标      

    private Vector2 pos;     //二维坐标类型

     void OnGUI()     

      {             

          //鼠标左击,获取当前鼠标的位置         

       if (Input.GetMouseButton(0))           

          {         

               pos = Input.mousePosition;             

           }          

             //绘制图片        

        GUI.DrawTexture(new Rect(pos.x,Screen.height - pos.y,100,100), img);         

      }     

 }  

案例2——坐标显示和坐标转换(这个是触摸方面的。如果没有触摸屏,那就将那个if去掉吧!)

 using UnityEngine;     

 using System.Collections;     

 public class test: MonoBehaviour   {         

     //场景的相机,拖放进来        

    public Camera camera;          

     //场景的物体        

    private GameObject obj;      

      void Start()        

       {          

            //初始化        

        obj = GameObject.Find("Plane");       

        }         

         void Update ()       

         {              

               //有触摸           

          if (Input.touchCount > 0)              

               {                   

                   print("世界坐标" + obj.transform.position);                    

                    print("屏幕坐标" + Input.GetTouch(0).position);                    

                    print("世界坐标→屏幕坐标" + camera.WorldToScreenPoint(obj.transform.position));                    

                    print("屏幕坐标→视口坐标" + camera.ScreenToViewportPoint(Input.GetTouch(0).position));                   

                   print("世界坐标→视口坐标" + camera.WorldToViewportPoint(obj.transform.position));               

            }         

      }   

 }  

 

 

 

GUI.Box(new Rect(40, 40, 100, 90), "Loader Menu"); //从左上坐标(40,40)开始,生成总长为100 总宽为90的矩形

        GUI.Button(new Rect(50, 50, 50, 90), "Star") ;

        GUI.Button(new Rect(200, 200, 30, 90), "End");

C# 正则表达式

正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。

定义正则表达式

下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。

  • 字符转义
  • 字符类
  • 定位点
  • 分组构造
  • 限定符
  • 反向引用构造
  • 备用构造
  • 替换
  • 杂项构造

字符转义

正则表达式中的反斜杠字符()指示其后跟的字符是特殊字符,或应按原义解释该字符。

下表列出了转义字符:

转义字符描述模式匹配
a与报警 (bell) 符 u0007 匹配。a"Warning!" + 'u0007' 中的 "u0007"
在字符类中,与退格键 u0008 匹配。[]{3,}"" 中的 ""
与制表符 u0009 匹配。(w+) "Name Addr " 中的 "Name " 和 "Addr "
与回车符 u000D 匹配。( 与换行符 不是等效的。) (w+)" Hello World." 中的 " Hello"
v与垂直制表符 u000B 匹配。[v]{2,}"vvv" 中的 "vvv"
f与换页符 u000C 匹配。[f]{2,}"fff" 中的 "fff"
与换行符 u000A 匹配。 (w+)" Hello World." 中的 " Hello"
e与转义符 u001B 匹配。e"x001B" 中的 "x001B"
nnn使用八进制表示形式指定一个字符(nnn 由二到三位数字组成)。w

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c#实现http请求并解析返回之jsonNetty入门1之----认识Netty下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

QML 修改TableView和TreeView滚动条样式

TreeView控件: 1 import QtQuick 2.9 2 import QtQuick.Controls 1.4 3 import QtQuick.Controls.Styles 1.4 4 import QtQml.Models 2.2 5 import QtQuick.Controls 2.12 6 7 TreeView { 8 id:c...

NGUI系列教程二

接下来我们创建一个Label,NGUI->Open the Widget Wizard,打开widgetTool对话框,在Template中选择Label,确定AddTo右侧选项为panel,点击,Add To完成Label创建。 1.Label属性窗口如图 1.下面的节奏可能有点快,大家可以先熟悉一下上面讲的流程,再进行下面的学习。接下来我们...

Android学习笔记之 SimpleAdapter 中添加按钮响应事件,getView的重写

Andriod 里面的ListView是一个显示列表数据的控件,常用适配器SimpleAdapter进行绑定,绑定代码如下: ListView lstView = (ListView) this.findViewById(R.id.listView1); SimpleAdapter adapter=new SimpleAdapter(context, d...

C#字符串(String)类型中@的用法

C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符()当作普通字符对待,比如: stringstr =@"C:Windows";等价于: stringstr ="C:\Windows";@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。 stringstr =@"<script type=""text/java...

iOS开发-OC语言 (一)oc数据类型

分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型、指针数据类型 基本数据类型:数值型、字符型(char)、布尔型、空类型(void) 指针数据类型:类(class)、id 数值型:整数类型int、浮点型float、double c和oc的基本数据类型 int:声明整型变量 double:声明双精度变量 f...

ubuntu下vi的使用

ubuntu下vi的使用 ssh之后对于server的文件,我习惯用gedit,可是不好改动,于是就用vi. 1、vi的基本概念   基本上vi能够分为三种状态,各自是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode), 各模式的功能区分例如以下:   1) 命令行模式command mod...