[unity]屏幕坐標轉世界坐標


1.使用ScreenToWorldPoint將獲取的屏幕位置直接轉成世界坐標:

 

            1:獲取的屏幕坐標Input.mousePosition是一個2d坐標,z軸值為0,這個z值是相對於當前camera的,為零表示z軸與相機重合了,因此給ScreenToWorlfdPoint傳值時,不能直接傳Input.mousePosition,否則獲取的世界坐標永遠只有一個值;

 

            2:為了解決坑1,便使傳入的z軸值,那么傳什么值呢,可以取當前相機的z軸值絕對值,大概意思就是距離相機的距離,生成點的位置最后會在一個平面(因為傳入的z值固定了),比較適合一個平面內取點

 

2.射線檢測,取得屏幕坐標,發射射線,取得碰撞信息,比較准確,射線碰到那個有碰撞器的位置,就返回這個位置

 

 

Ray ray= mainCamera.ScreenPointToRay(screenPos);

            RaycastHit hit;

            bool ishit=Physics.Raycast(ray,out hit);

            if (ishit)

            {

                Vector3 spacePos = hit.point;

                print("screenPos:" + screenPos);

                print("spacePos:" + spacePos);

 

           }

 

原文鏈接:https://blog.csdn.net/qq_38806355/article/details/82938553


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM