簡體   English   中英

在Unity3D中找到鼠標的地圖高度

[英]Find the height of a map at the mouse in Unity3D

在我的項目中,我有一張自頂向下的地圖視圖,它是用高度圖創建的,並用顏色編碼。 我希望用戶能夠通過點擊他們想要去的地方將船放到地圖上,但前提是他們點擊了水。 有沒有辦法實現這一目標? 不知道我在解釋自己方面是否做得很好,所以問一下,我會盡力澄清。

編輯:根據蘇維埃特在下面的回應,似乎更好的方式做我想要做的是投射光線並檢查距離,並比較它,以確定它是否擊中水或土地。 到目前為止,我已根據我在此處找到的示例完成此操作:

RaycastHit hit;
Ray downRay = new Ray(Vector3.down, Input.mousePosition);
Physics.Raycast(downRay, out hit);
Debug.Log(hit.distance);

這確實返回一個距離,但是值似乎不正確。 與我將數字放入新Ray(...)的方式有關嗎?

由於您沒有提供嘗試過的任何示例,因此該答案將僅是通用方法。

您不會在鼠標上搜索像素顏色,您可以采樣高度圖的高度或表面上UV坐標的顏色。 通過將射線投射到屏幕空間中,將其轉換為世界空間以檢測碰撞,將碰撞位置轉換為UV坐標,然后在該UV坐標處引用高度圖或顏色圖,可以得到該坐標。 如果高度低到足以被認為是水或水的顏色,則放置一條船。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM