日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

u3d中的坐标系

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 u3d中的坐标系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

任何子級游戲對象 (Child GameObject) 的檢視器 (Inspector) 中的變換 (Transform) 值都會相對于父級 (Parent) 的變換 (Transform) 值而顯示。這些值又被稱局部坐標 (Local Coordinate)?

就是說。u3d界面上設置的坐標都是其本地坐標

轉換小圖示切換 (Transform Gizmo Toggles) -- 影響場景視圖 (Scene View) 顯示 ? 該圖標只是為了旋轉和移動位置時方便操作。。pivot 中心點在父對象本身的中心點。。 center在父對象整個容器的中心點。。。 ?global是全局的坐標系。。。local是本地的坐標系(旋轉后,會改變坐標方向)

?

  • World Space(世界坐標):我們在場景中添加物體(如:Cube),他們都是以世界坐標顯示在場景中的。transform.position可以獲得該位置坐標。????????????
  • Screen Space(屏幕坐標):以像素來定義的,以屏幕的左下角為(0,0)點,右上角為(Screen.width,Screen.height),Z的位置是以相機的世界單位來衡量的。注:鼠標位置坐標屬于屏幕坐標,Input.mousePosition可以獲得該位置坐標,手指觸摸屏幕也為屏幕坐標,Input.GetTouch(0).position可以獲得單個手指觸摸屏幕坐標。

  • ViewPort Space(視口坐標):視口坐標是標準的和相對于相機的。相機的左下角為(0,0)點,右上角為(1,1)點,Z的位置是以相機的世界單位來衡量的。(用的不多,反正我暫時沒有用到~呵呵~)

  • 繪制GUI界面的坐標系:這個坐標系與屏幕坐標系相似,不同的是該坐標系以屏幕的左上角為(0,0)點,右下角為(Screen.width,Screen.height)。

    • 世界坐標→屏幕坐標:camera.WorldToScreenPoint(transform.position);這樣可以將世界坐標轉換為屏幕坐標。其中camera為場景中的camera對象。

    • 屏幕坐標→視口坐標:camera.ScreenToViewportPoint(Input.GetTouch(0).position);這樣可以將屏幕坐標轉換為視口坐標。其中camera為場景中的camera對象。

    • 視口坐標→屏幕坐標:camera.ViewportToScreenPoint();

    • 視口坐標→世界坐標:camera.ViewportToWorldPoint();
    • 案例1——在鼠標點擊的位置上繪制一張圖片出來(關于繪制GUI界面坐標系與屏幕坐標系之間的關系)。 [csharp]?view plaincopy
    • using?UnityEngine;??
    • ?using?System.Collections;??
    • ?public?class?test?:?MonoBehaviour???{??????????
    • ??????//圖片????
    • ????public?Texture?img;??????
    • ?????//儲存鼠標的位置坐標??????
    • ????private?Vector2?pos;?????
    • ?????void?OnGUI()?????
    • ??????{?????????????
    • ??????????//鼠標左擊,獲取當前鼠標的位置?????????
    • ???????if?(Input.GetMouseButton(0))???????????
    • ??????????{?????????
    • ???????????????pos?=?Input.mousePosition;?????????????
    • ???????????}??????????
    • ?????????????//繪制圖片????????
    • ????????GUI.DrawTexture(new?Rect(pos.x,Screen.height?-?pos.y,100,100),?img);?????????
    • ??????}?????
    • }??
    • 案例2——坐標顯示和坐標轉換(這個是觸摸方面的。如果沒有觸摸屏,那就將那個if去掉吧!) [csharp]?view plaincopy
    • using?UnityEngine;?????
    • using?System.Collections;?????
    • public?class?test:?MonoBehaviour???{?????????
    • ?????//場景的相機,拖放進來????????
    • ????public?Camera?camera;??????????
    • ?????//場景的物體????????
    • ????private?GameObject?obj;??????
    • ??????void?Start()????????
    • ???????{??????????
    • ????????????//初始化????????
    • ????????obj?=?GameObject.Find("Plane");?????????
    • ????????}?????????
    • ?????????void?Update?()???????
    • ?????????{??????????????
    • ???????????????//有觸摸???????????
    • ??????????if?(Input.touchCount?>?0)??????????????
    • ???????????????{???????????????????
    • ???????????????????print("世界坐標"?+?obj.transform.position);????????????????????
    • ????????????????????print("屏幕坐標"?+?Input.GetTouch(0).position);????????????????????
    • ????????????????????print("世界坐標→屏幕坐標"?+?camera.WorldToScreenPoint(obj.transform.position));????????????????????
    • ????????????????????print("屏幕坐標→視口坐標"?+?camera.ScreenToViewportPoint(Input.GetTouch(0).position));???????????????????
    • ???????????????????print("世界坐標→視口坐標"?+?camera.WorldToViewportPoint(obj.transform.position));???????????????
    • ????????????}?????????
    • ??????}???
    • } ?

    轉載于:https://www.cnblogs.com/zhepama/p/4331419.html

    總結

    以上是生活随笔為你收集整理的u3d中的坐标系的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。