精华内容
下载资源
问答
  • 假定世界有一点坐标为pos,其转换屏幕坐标为: Camera.main.WorldToScreenPoint(pos); 2.屏幕坐标转世界坐标 假定屏幕有一点坐标为pos,其转换为世界坐标为: Camera.main.ScreenToWorldPoint(...

    1.世界坐标转屏幕坐标

    假定世界有一点坐标为pos,其转换为屏幕坐标为:

    Camera.main.WorldToScreenPoint(pos);

    2.屏幕坐标转世界坐标

    假定屏幕有一点坐标为pos,其转换为世界坐标为:

    Camera.main.ScreenToWorldPoint(pos);

    3.屏幕坐标转NGUI坐标

    假定屏幕有一点坐标为pos,其转换为NGUI坐标为:

    UICamera.currentCamera.ScreenToWorldPoint(pos);

    这个需要注意的是,得到的坐标为全球坐标,而不是本地坐标,所以NGUI的组件设置位置需要设置position而不是localPosition,我当时就是被这个坑过(┬_┬)

    4.NGUI坐标转屏幕坐标

    假定NGUI有一点坐标为pos,其转换为NGUI坐标为:

    UICamera.currentCamera.WorldToScreenPoint(pos);

    5.世界坐标转NGUI坐标

    假定屏幕有一点世界为pos,其转换为NGUI坐标为:

    需要先把世界坐标转为屏幕坐标

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

    然后再把屏幕坐标转NGUI坐标

    UICamera.currentCamera.ScreenToWorldPoint(screenPos);

    转载于:https://my.oschina.net/mbreath/blog/1525278

    展开全文
  • unity 中的3d物体都是以世界坐标显示在场景中的,通过transform.position获取。 unity 屏幕坐标(0.0)点在左下角以像素为单位,屏幕宽高分别是Screen.width, Screen....屏幕坐标ngui坐标有两种转换方式 1.当Sca

    unity 中的3d物体都是以世界坐标显示在场景中的,通过transform.position获取。

    unity 屏幕坐标(0.0)点在左下角以像素为单位,屏幕宽高分别是Screen.width, Screen.height。

    ngui坐标(0.0)点在屏幕中心,通过两种方式缩放Pixel Perfect 和Fixed Size。


    屏幕坐标和ngui坐标有两种转换方式

    1.当Scaling Style 是 PixelPerfect 时仅计算像素的偏移即可

    t.localPosition = (Input.mousePosition - new Vector3(Screen.width / 2, Screen.height / 2, 0))

    2.当Scaling Style 是 Fixed Size时还需计算坐标系的缩放值

    float rate = System.Convert.ToSingle(uir.manualHeight) / Screen.height;
    t.localPosition = (Input.mousePosition - new Vector3(Screen.width / 2, Screen.height / 2, 0)) * rate;


    当然unity也提供了两个转换方法

    世界坐标和屏幕坐标转换通过screenpos = Camera.main.WorldToScreenPoint(worldpos)

    屏幕坐标和ngui坐标转换通过trans.position = UICamera.currentCamera.ScreenToWorldPoint(screenpos)





    展开全文
  • 世界坐标转换NGUI坐标:  场景中有一个照3D物体的透视摄像机,NGUI...1. 使用透视摄像机把世界坐标转换屏幕坐标 1 2 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f; //z一

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

    1
    2
    Vector3 pos = Camera.main.WorldToScreenPoint(worldPos);
    pos.z = 0f;   //z一定要为0.
    2. 使用UI摄像机转换到NGUI的世界坐标
    1
    Vector3 pos2 = UICamera.currentCamera.ScreenToWorldPoint(pos);
    3. 赋值给NGUI控件
    1
    2
    //temp为NGUI控件.
    temp.transform.position = pos2;
    似乎很简单...不过第一次遇到这个问题的时候纠结了我好久-  - ,

    PS :话说Unity 的新版GUI还不出现么...真心不想再用这个NXOXXX了...


    什么是世界坐标、绝对坐标和相对坐标?各有什么区别?

    绝对坐标就是你输入的点的位置就是这个坐标的位置.而相对坐标呢?就是相对于你上一个点的位置的X,Y轴方向上的失量.换句话说呢?就是绝对坐标是基于原点的.而相对坐标呢?是基于上一个点的. 
    就像绝对位移和相对位移一样啊{:em11} 
    绝对坐标是指你输入的坐标相对于坐标原点的坐标;而相对坐标是指你输入的坐标相对于你前一个点的坐标位置!搜索输入坐标时坐标前要加@符号的。




    展开全文
  • 在游戏开发中,避免不了会用到坐标转化的情况,下面自己写的帮助类方法  public class UtilHelper : SingletonObject {  public Vector3 PosScreenToNgui(Vector3 screenPos)  {  Camera NguiCamera = ...

          在游戏开发中,避免不了会用到坐标转化的情况,下面自己写的帮助类方法

        public class UtilHelper : SingletonObject<UtilHelper>
    {
        public Vector3 PosScreenToNgui(Vector3 screenPos)
        {
            Camera NguiCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));
            var nguiPos = NguiCamera.ScreenToWorldPoint(screenPos);
            return nguiPos;
        }
        public Vector3 PosScreenToWorld(Vector3 screenPos, float z)
        {
            Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
            screenPos.z = z;
            var worldPos = worldCamera.ScreenToWorldPoint(screenPos);
            return worldPos;
        }
        public Vector3 PosWorldToNgui(GameObject target)
        {
            Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
            Camera NguiCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));


            var screenPos = worldCamera.WorldToScreenPoint(target.transform.position);
            var nguiPos = NguiCamera.ScreenToWorldPoint(screenPos);
            nguiPos.z = 0;
            return nguiPos;
        }
        public Vector3 PosWorldToScreen(GameObject target)
        {
            Camera worldCamera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("Default"));
            var screenPos = worldCamera.WorldToScreenPoint(target.transform.position); screenPos.z = 0;
            return screenPos;
        }
        public Vector3 PosNguiToWorld(Vector3 target, float z)
        {
            Camera worldCamera = Camera.main;
            Camera NguiCamera = UICamera.currentCamera;


            var screenPos = NguiCamera.WorldToScreenPoint(target);
            screenPos.z = z;
            var worldPos = worldCamera.ScreenToWorldPoint(screenPos);
            return worldPos;
        }

        public void AutoFitCamera()
        {
            var camera = NGUITools.FindCameraForLayer(LayerMask.NameToLayer("UI"));
            camera.aspect = 1280f / 720f;
            Debug.Log("camera.aspect:"+camera.aspect);
        }
    }


    展开全文
  • 世界坐标转换NGUI坐标:  ...1. 使用透视摄像机把世界坐标转换屏幕坐标 1 2 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f; //z一
  • 最好用物体的transform.position而不是本地坐标来transform.localPosition来进行转换 Vector3 pos = Camera.main.WorldToScreenPoint ... //获取目标物体的屏幕坐标 pos = UICamera.mainCamera.ScreenToWorldP
  • 将Unity中的世界坐标转换NGUI中的坐标,比如可用于自制血条等。代码如下: 1 using UnityEngine; 2 using System.Collections; 3 public class Healthbar : MonoBehaviour { 4 public GameObject Target...
  • 1、将Unity中的世界坐标转换NGUI中的坐标,代码如下所示:  public GameObject TargetObject; //目标物体  public Camera worldcamera; //世界相机。  public Camera guiCamera; //UI相机  // Use...
  • Unity 与 NGUI 坐标转换原理

    千次阅读 2017-01-24 01:21:02
    在游戏中最常用到坐标转换的就是制作人物头顶的血条/名字 之类的显示,Unity提供了摄像机以下API供我们使用:1、将世界坐标转换屏幕坐标Camera.WorldToScreenPoint()2、将屏幕坐标转换到世界坐标Camera....
  • 在制作游戏中我们经常会遇到这样一个需求: 在人物模型的上面显示 名字、称号 一...这时候我们就要用到坐标转换了 确定UI Title 的世界坐标 代码如下: Transform charater = null;//角色Transform Transfo...
  • Unity 世界坐标转换NGUI坐标

    千次阅读 2013-09-28 17:50:09
    世界坐标转换NGUI坐标:  ...1. 使用透视摄像机把世界坐标转换屏幕坐标 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f; //z一定要为0. 2. 使用UI摄像机转换NGUI的世界坐标 V
  • 上一篇写了关于Unity中的世界坐标转换NGUI中的坐标,这篇来写一下关于NGUI中的坐标转换为Unity中的世界坐标,代码如下: 1 GameObject targetObject = (GameObject)Instantiate(Resources.Load("Model/"+name)...
  • 1. 使用透视摄像机把世界坐标转换屏幕坐标 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f; //z一定要为0. 2. 使用UI摄像机转换NGUI的世界坐标 Vec
  • 要求是点击屏幕某个点,当前点生成一个ui。代码如下 Camera uicamera; uicamera = NGUITools.FindCameraForLayer(8); private void Update() { if (Input.GetMouseButtonDown(0)) { Vector3 vec =uica...
  • 资料1: ...1. 使用透视摄像机把世界坐标转换屏幕坐标 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f; //z一定要为0. 2. 使用UI摄像机转换NGUI的世界坐
  • 判断鼠标坐标位置 在Unity中,如果 报错 有的物体 没有实例化,但是程序依旧可以运行 一定要注意,用IF语句判断其不为空 否则,Unity系统工程崩溃,那就很麻烦了  private Vector3 stwp;  if (UICamera....
  • 屏幕坐标(Input.mousePosition)转换UI坐标 需要了解到的知识点 1:屏幕坐标的起点位置 左下角为(0,0)点,右上角为(Screen.width,Screen.height) 2:UI坐标的起点位置 屏幕中心点 方法1 Vector2 uisize = ...
  • 我碰到的问题是:我使用了unity2d部分的组件,现在想...当然这就得算出2d物体在屏幕上的位置,后转换NGUI下的位置,期间特效挂为子物体,这时候,特效进行运动,就能实现所需的效果了! 这篇文章确实帮了我的忙
  • 世界坐标转换NGUI坐标:场景中有... 使用透视摄像机把世界坐标转换屏幕坐标 Vector3 pos = Camera.main.WorldToScreenPoint(worldPos); pos.z = 0f;//z一定要为0. 2. 使用UI摄像机转换NGUI的世界坐标 Ve...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 508
精华内容 203
关键字:

ngui转换屏幕坐标