2010年9月13日 星期一

天子傳奇外掛製作紀錄(5) - 座標轉換

▲小地圖移動 , 綠色線段為A*計算出的移動路徑


搞定了路徑規畫後 , 現在碰到最大的難題是 , 如何將遊戲中的世界座標跟我們的小地圖座標做轉換
小地圖的長寬是512*512 , 而遊戲中隨便一個位置的座標數值都是上千上萬的
一開始的想法很單純 , 只要把遊戲中某個位置的座標 , 跟小地圖上相同位置的座標相除 
就可以得出兩個地圖之間的倍率 , 公式為 遊戲座標/ 倍率 = 小地圖座標 
結果事情並不是憨人想的這麼簡單 !!!
經過測試後發現 , 在計算點附近的位置勉強還算準確 , 但離的越遠, 差距就越大
後來仔細想想才知道問題出在哪裡 , 因為遊戲中地圖的左上角並不是從0,0座標開始的
因此公式應該修正為 (遊戲座標-原點座標)/倍率  = 小地圖座標
可惜的是遊戲中不是每一張地圖都能夠走到最左上角(能走到最上跟最左也行) 
所以無從得知原點的座標, 因此只好從第二個變數"倍率"下手 , 而倍率是可以從移動的距離算出的
例如:我從遊戲中A點移動到B點計算出兩點距離 , 然後除上小地圖上相同A點到B點的距離
公式為 (遊戲座標A - 遊戲座標B) / (小地圖A - 小地圖B) =倍率
計算出倍率後帶入原公式中 , 就能算出原點座標了!!!

沒有留言:

張貼留言