我從來沒有使用XNA,但通常是爲了解決這種問題,你只需要從屏幕的實際分辨率中提取你的精靈的位置。
這意味着,你可以存儲與絕對座標(例如,在範圍0.0f - 1.0
)對象的位置,使x = 0.0
是最左邊的像素可見光和1.0
是最右邊的,故事的y
座標相同。
然後根據此座標空間計算所有內容,並且擔心在實際繪製之前將它們轉換。當然,對於這種方法,您需要具有不同的尺寸,以獨立於分辨率的方式保持相同的比例。例如,如果您有1080p,那麼您選擇使用64x64精靈,1080/64使用16.875,因此對於720p分辨率,您需要42.6像素(如選擇:42x42),其他分辨率等等。
轉型是那麼很簡單:
float xcord = ...
float ycord = ...
int xscreen = (int)(xcord*xresolution)
int yscreen = (int)(ycord*yresolution)
(我不知道是否已經XNA使用的float座標)
另外其實我不知道你是什麼樣的遊戲但是如果你的屏幕只顯示整個世界/遊戲的視口/你可以很容易地將滾動部分與這個轉換結合在一起,因爲你可以很容易地抵消它以獲得屏幕座標:
float xcord = 15.4 /* something absolute to the world*/
int xscreen = (int)((xcord - xviewport_offset) * xresolution)
其中xviewport_offset
應該是視口左側的座標,當然差別應該是< 1.0
,否則精靈會在外面。
這看起來不錯!謝謝! – 2010-11-24 18:22:39