查看: 1418|回复: 3
打印 上一主题 下一主题

[其他] Unity中的世界坐标和NGUI中的坐标的相互转换

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-8-29 00:22:14 |只看该作者 |倒序浏览
1 将Unity中的世界坐标转换成NGUI中的坐标,代码如下所示:

    public GameObject TargetObject;         //目标物体
    public Camera worldcamera;         //世界相机。
    public Camera guiCamera;           //UI相机
    // Use this for initialization
    void Start()
    {
        worldcamera =NGUITools.FindCameraForLayer(TargetObject.layer);     //这里是通过物体的层获得相应层上的相机
        guiCamera = NGUITools.FindCameraForLayer(this.gameObject.layer);   //通过脚本所在物体的层获得相应层上的相机
    }

    // Update is called once per frame
    void Update()
    {

    }
    void LateUpdate()
    {
        Vector3 pos = worldcamera.WorldToScreenPoint(TargetObject.transform.position);         //获取目标物体的屏幕坐标
        pos = guiCamera.ScreenToWorldPoint(pos);                              //将屏幕坐标转换为UI的世界坐标
        pos.z = 0;                                //由于NGUI 2D界面的Z轴都为0
        transform.position =new Vector3(pos.x,pos.y,pos.z);      //将修改过的坐标赋给UI界面
    }
}


2、将NGUI的坐标改为Unity中的世界坐标,代码如下所示:
GameObject targetObject = (GameObject)Instantiate(Resources.Load("Model/"+name));
         Camera worldcamera = NGUITools.FindCameraForLayer(targetObject.layer);     //这里是通过物体的层获得相应层上的相机
         Camera guiCamera = NGUITools.FindCameraForLayer(obj.layer);   //通过脚本所在物体的层获得相应层上的相机
         if (worldcamera == null || guiCamera == null)
        {
            return;
        }
        Vector3 pos = guiCamera.WorldToScreenPoint(obj.transform.position);         //获取UI界面的屏幕坐标
        pos.z = 1f;//设置为零时转换后的pos全为0,屏幕空间的原因,被坑过的我提醒大家,切记要改!
        pos = worldcamera.ScreenToWorldPoint(pos);                              //将屏幕坐标转换为世界坐标
        pos.y = 0f;
        targetObject.transform.position = new Vector3(pos.x, pos.y, pos.z);      //将修改过的坐标赋给目标物体坐标


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

3

听众

2200

积分

中级设计师

Rank: 5Rank: 5

纳金币
0
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-8-29 00:31:32 |只看该作者
新人学习了
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-8-29 03:08:23 |只看该作者
Great stuff !
回复

使用道具 举报

2

主题

2

听众

972

积分

初级设计师

Rank: 3Rank: 3

纳金币
14
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-8-29 09:47:46 |只看该作者
Great stuff !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-30 17:29 , Processed in 4.031276 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部