查看: 2746|回复: 0
打印 上一主题 下一主题

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

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52336
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-1-15 03:19:31 |只看该作者 |倒序浏览

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
回复

使用道具 举报

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

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

GMT+8, 2024-11-17 23:56 , Processed in 0.206280 second(s), 29 queries .

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

© 2008-2019 Narkii Inc.

回顶部