unity3d世界坐标与ngui坐标

世界坐标转换到NGUI坐标: 
场景中有一个照3D物体的透视摄像机,NGUI使用自己独立的正交摄像机,转换步骤如下:    
1. 使用透视摄像机把世界坐标转换到屏幕坐标

Vector3 pos = Camera.main.WorldToScreenPoint(worldPos);

pos.z = 0f;   //z一定要为0.

2. 使用UI摄像机转换到NGUI的世界坐标

Vector3 pos2 = UICamera.currentCamera.ScreenToWorldPoint(pos);

3. 赋值给NGUI控件

temp.transform.position = pos2;

这个坐标可以赋值给NGUI控件,如果需要得到NGUI控件下子物体的坐标,如下:

1. 使用透视摄像机把世界坐标转换到屏幕坐标

Vector3 pos = Camera.main.WorldToScreenPoint(worldPos);//不需要使z为0

2.使用UI摄像机转换到NGUI的世界坐标

Vector3 pos2 = UICamera.currentCamera.ScreenToWorldPoint(pos);

3.获取子物体的上级父物体parantobj,然后获取坐标

Vector3 posres = parantObject.transform.InverseTransformPoint(poscamera);

4.复制给物体

时间: 2024-11-05 12:26:44

unity3d世界坐标与ngui坐标的相关文章

将世界坐标转成NGUI坐标

将世界坐标转成NGUI坐标,这个中间需要一个屏幕坐标,可参考如下代码: /// <summary> /// 将世界坐标转成UI坐标 /// </summary> /// <param name="wordPos">Word position.</param> public Vector3 wordPos_to_uiPos(Vector3 wordPos) { Vector3 screenPos = Camera.main.WorldToS

[Unity3D]Unity3D再叙NGUI之血条及技能冷却效果

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:

unity3d中的ngui的一些笔记

一. NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加.(注:用Component添加无效). 2. Attach an Anchor:表示为该物体添加了UIAnchor脚本,作用是避免像素偏移的问题 3. Attach UIStretch:表示为该物体添加了UIStretch脚本,提供缩放功能 4. Make Pixel Perfect:表示自动为你调整Transform的尺寸 5. Create a Pa

【Unity3D】【NGUI】如何动态给EventDelegate添加参数

NGUI讨论群:333417608 NGUI版本:3.6.8 注意:参数必须是公共成员变量,不能是栈上的.或者私有的(就是临时在函数里面定义的或者是函数的参数都不行) using UnityEngine; using System.Collections; public class SZEventDelegateParams : MonoBehaviour { public int param = 2; void Start() { // 创建新的delegate,最后调用此(this)脚本的F

【Unity3D】【NGUI】Atlas的动态创建

NGUI讨论群:333417608 NGUI版本:3.6.5 1.参见SZUIAtlasMakerRuntimeTest设置相应的值以上值需要提前设置好 2.没有检查是否atlas能够正确创建,自己可以改,加入返回值 3.代码都是在NGUI里面拷贝出来的,只是进行改动,没有新代码 4.适用与那种从网上下图片,之后还不想用UITexture的人,但是还是建议用UITexture如果drawcall不是问题的话 5.自己以后更新按我的方式改改就可以 6.动态创建速度较慢,建议在游戏启动的时候运行 7

【Unity3D】【NGUI】UIRect的Anchor的使用

NGUI讨论群:333417608 NGUI版本:3.6.5 以下面的图,解释下基本的Anchors的使用(可以通过官方的Anchor和Chat例子进行深入学习) Target不是一定要是Sprite,可以是任意的UIRect(UISprite.UIPanel的基类)或者可以是Camera.如果是UIRect类型,对齐的就是当前UIRect的边缘,如果是Camera,对齐的就是屏幕. (这里说的当前图片指的下面最终图片的绿色,背景图片指的下面最终图片的黑色) Type:Advanced--选项比

【Unity3D】【NGUI】本地生成API文档

原地址:http://blog.csdn.net/u012091672/article/details/17438135 NGUI讨论群:333417608 1.安装Doxygen(http://www.stack.nl/~dimitri/doxygen/) 2.配置 1)工程名 2)版本 3)源代码目录(根据自己的修改) 4)递归扫描(包含子目录) 5)输出目录 1)只输出可以被文档化的实体 2)c#文档优化 1)有导航栏 2)不使用排版 1)随便指定个目录(用来保存配额) 2)切换到运行界面

Unity3D开发之NGUI结合粒子系统的遮挡问题

原地址:http://blog.csdn.net/lihandsome/article/details/22194025 我的是NGUI3.0.3版本,在加入粒子系统的时候发现一直都是在精灵的下面,所以必须要解决这个问题. 问题的出现是因为NGUI和粒子系统的渲染队列问题,那我们自己就可以新建一个属于粒子系统的Shader,然后直接复制原来系统自带的那个Shader的代码,修改代码里面的 [csharp] view plaincopy "Queue"="Transparent

Unity 本地坐标到世界坐标,世界坐标到本地坐标

世界=>本地 public GameObject mTarget; public GameObject mPar; //这个注意一定要是mTarget的第一父物体. // Use this for initialization void Start () { string tarStr = string.Format("mtarget local:{0},world:{1}", mTarget.transform.localPosition, mTarget.transform.