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