unity坐标转变问题

unity最常用的几种坐标,屏幕坐标,世界坐标,ngui坐标,相对于父物体的坐标(localPoisition)。

但是有时候这几种坐标相互转换何其困难,让自己狠抓头。不得不操作的方式是创建虚拟体,然后来回改变他的父节点(parent),

不过unity提供了两个方法挺好用的。解决了所有坐标转换问题,

InverseTransformPoint: 绝对坐标转相对坐标,也就是世界坐标转你想要放到的父节点下的相对坐标,

TransformPoint: 相对坐标转绝对坐标,也就是你想要放到的父节点下的相对坐标转成世界坐标,

调用方法就是,比如你想把鼠标点击的位置转换成你某一个父节点下的ngui坐标。

操作如下

                Vector3 vec = new Vector3();
		Ray ray=UICamera.mainCamera.ScreenPointToRay(Input.mousePosition);// 向屏幕发射线
		RaycastHit hit;
		if(Physics.Raycast(ray,out hit))
		{
			vec = 你想转到的父节点物体.transform.InverseTransformPoint(hit.point);
		}

这样就得到了一个屏幕点击转向ngui的父节点的相对坐标,其他的物体也是用此类方法使用,

这样保证了操作坐标的流畅性,不用创建那么多的虚拟体,

当然相对坐标转绝对坐标也一样的用法,不用创建虚拟体,你想把某一个父节点下的相对于这个父节点的某一个位置转成世界坐标跟上边一样的用法,

你当前的父物体.transform.TransformPoint(相对于该父物体的位置);

这样就可以转成世界坐标,世界坐标通用场景所有物体,想做什么就可以做什么了

unity坐标转变问题,布布扣,bubuko.com

时间: 2024-10-10 05:45:33

unity坐标转变问题的相关文章

【VR】Leap Motion 官网文档 HandModel(手部模型)

前言: 本系列译文是为迎合Unity VR的热潮与大家的学习需要,推出的针对Unity方向的Leap Motion官方文档中英对照翻译. 本篇为第六篇 <HandModel(手部模型)> ,该类主要用于连接控制器和手部模型,以及处理手臂.肘部.手掌.手指的位置和角度等信息. Handmodel is the base class for all the other hand scripts. If you are creating your own hands and need a custo

UnityShader快速上手指南(二)

简介 前一篇介绍了如果编写最基本的shader,接下来本文将会简单的深入一下,我们先来看下效果吧 呃,gif效果不好,实际效果是很平滑的动态过渡 实现思路 1.首先我们要实现一个彩色方块 2.让色彩动起来 over 实现一个RGB CUBE 先看代码吧: Shader "LT/Lesson2" { Properties { _OffsetX ("Offset X", Range (-1.5, 1.5) ) = 0 _OffsetY ("Offset Y&q

unity中mesh属性的uv坐标讨论

http://blog.sina.com.cn/s/blog_427cf00b0102vp0j.html 之前在做连连看游戏中,也用到贴图坐标,当时我们讲到,不管是平铺(Tiling)还是偏移(Offset),我们参考的基准都是原始的那张图,Tiling配合Offset,Tiling负责截取,Offset负责移动,最终实现截取贴图的任一部分?,但是这种方法弄出的图形形状都是方块的,无法实现任意的贴图 而下面要讨论的方法和上面的方法会大不一样,会从UV坐标的角度去讨论,从而实现想怎么贴就怎么贴的效

【小松教你手游开发】【unity实用技能】根据上一个GameObject坐标生成的tips界面

开发游戏,特别是mmo手游的时候经常需要开发的一个需求是,点击某个装备,在它附近的位置生成一个tips界面,介绍装备功能和各种信息. 像上面红色框框里的这个. 这个主要的问题是 根据点击的GameObject对应生成这个详情界面时,详情界面位置需要合理摆放(不能显示不到,不能遮挡等) 基本的思路是, 首先找到GameObject的position, 把手机屏幕大概分成四个象限,知道这个GameObject大概在这个屏幕的哪个象限(左上,左下,右上,右下) 根据象限来判断详情界面应该在GameOb

将Unity中的世界坐标转换成NGUI中的坐标

将Unity中的世界坐标转换成NGUI中的坐标,比如可用于自制血条等.代码如下: 1 using UnityEngine; 2 using System.Collections; 3 public class Healthbar : MonoBehaviour { 4 public GameObject TargetObject; //目标物体.这里是指Cube 5 public Camera worldcamera; //世界相机. 6 public Camera guiCamera; //U

UNITY 复制对象后局部坐标和世界坐标的变化问题

void Start () { var pgo = transform.Find ("Button").gameObject; obtn = Instantiate (pgo); //obtn = Instantiate (pgo, pgo.transform.Parent);         var pos = obtn.transform.position; //obtn.transform.localPosition = Vector3.zero; Debug.LogFormat

unity 获取和设置gameObject的坐标

// 获取player_postion变量指定的对象的三围坐标 Vector3 player_postion = Player.transform.position; // 获取X,Y,Z值 float x = player_postion.x; float y = player_postion.y; float z = player_postion.z; // 设置应用了当前函数的GameObject的坐标 // 1.直接赋值 this.GetComponent<Transform>().p

【Unity】稍微说一下关于各种坐标的转换。比如WorldToScreenPoint

之前写了一篇关于在物体头顶上显示名字的随笔. 估计难懂的点就在各种坐标的转换. 这里详细(就我这水平,怎么可能详细~~~)解说一下.额............. 用另一种方式举个栗子吧. 还是实现在物体的头顶或某个部位显示UI并跟随物体的移动改变位置. 先把栗子端上来: public Transform Boy;//帅帅的主角 public Transform UI;//对主角死缠烂打的UI君 Camera cam;//主相机 void Update () { UI.localPosition

关于Unity中的世界坐标和局部坐标

1.物体的局部坐标的方向(物体自身的方向) transform.forward. transform.right. transform.up 2.物体的世界坐标的方向 Vector3.forward. Vector3.right. Vector3.up 例子: 子弹沿自身坐标轴的Z轴方向运动 Vector3 v = this.transform.forward * this.speed; this.body.velocity = v; 注意: 父节点在Scene视图中显示出来的位置并非真正的In