1.使用ScreenToWorldPoint將獲取的屏幕位置直接轉成世界座標:spa
坑1:獲取的屏幕座標Input.mousePosition是一個2d座標,z軸值爲0,這個z值是相對於當前camera的,爲零表示z軸與相機重合了,所以給ScreenToWorlfdPoint傳值時,不能直接傳Input.mousePosition,不然獲取的世界座標永遠只有一個值;.net
坑2:爲了解決坑1,便使傳入的z軸值,那麼傳什麼值呢,能夠取當前相機的z軸值絕對值,大概意思就是距離相機的距離,生成點的位置最後會在一個平面(由於傳入的z值固定了),比較適合一個平面內取點code
2.射線檢測,取得屏幕座標,發射射線,取得碰撞信息,比較準確,射線碰到那個有碰撞器的位置,就返回這個位置blog
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/82938553get