2010-02-24 51 views
0

我想製作一個遊戲,地形不均勻,基於PNG。在理論上這是如何完成的,考慮到物體的vec2及其角度,因爲如果例如有一個小山,角色將根據小山的角度旋轉。由於使一個字符跟隨不平坦的地形(2D)

2D像馬里奧

+0

你是什麼意思的2D?你的地形2D就像超級馬里奧一樣,還是2D圖像,還是3D戰場中的地形3D? – 2010-02-24 13:19:22

回答

2

我想你是在談論一個heightmap這是你PNG,然後轉換爲3D三角形網格。您需要使用網格中的信息(或PNG顏色值)來計算應放置角色的當前高度。

如果這是一個飛行角色,你在這裏完成的很多事情,但在你的情況下,你需要計算角色正站在的當前三角形的法向量。使用兩個三角矢量(V2 - V1)x(V3 - V1)的叉積很容易。這也應該是你的角色角色。你也許可以通過包含來自周圍小丑的法線來平均這個向量。

順便說一句,當你有三角形的法線時,你也可以在地面上應用一些基本的陰影。


補充:OP變化問題是一個二維的問題。上述方法仍然有效,但在2D中更容易。

使用高度值不是作爲三角形,而是作爲直線(輪廓)並計算當前直線的法線。也就是說,在當前高度值和下一個高度值之間創建一個向量v。那麼該矢量的法線是n = < -v.y,v.x>。用它作爲角色的角度。

0

你需要的是PNG數據轉換成3-d表示映射函數...這個映射函數可以是簡單的,如簡單地在PNG解釋灰度值的高度或通過人類的指導,或者它可能是複雜的,就像在高級計算機視覺算法中使用的陰影檢測一樣。無論哪種情況,您都會根據通過映射功能收集的數據來移動角色。

0

在C++中,我會建議尋找一種支持更多平面地形的3D遊戲引擎。
你可以從this list

這當然,如果你不想從頭開始,在這種情況下,你需要首先尋找算法。

編輯: 既然是遊戲而不是2d的地形,如果你想讓你的環境脫離圖像,那麼你需要花費大量的時間在edge-detection