我使用Windows Forms和System.Drawing
命名空間在C#中編寫2D遊戲。如何根據每個分辨率調整我的2D遊戲?
遊戲基本上是一個戰場(橙色廣場),玩家互相射擊。這是怎麼樣的球館(800×600分辨率):https://i.gyazo.com/54f56cead5c42519678e48118d20947b.png
因爲我的比賽是不開放的世界,要求是每個球員總是看到100%的戰鬥舞臺,無論他們的決議。
我有一個問題,縮放一切,以適應不同分辨率的舞臺。
例如,遊戲分辨率是800x600,所以競技場大概是780x580像素。用戶突然將窗口大小調整爲1280x720,所以競技場立即變爲大約1260x700像素。這是有問題的一個主要原因:
該遊戲旨在成爲一個多人遊戲,其中每個玩家可以玩不同的分辨率。有兩件事情需要縮放:對象的位置(X,Y)及其大小(寬度,高度)。
我見過關於縮放的其他問題,但它們涉及開放遊戲,其中較低的分辨率意味着看到較少的地圖。在我的情況下,所有玩家總能看到100%的遊戲內容。
我試圖縮放這兩個尺寸,但是由於位置的縮放不適合縮放尺寸,反而變得太大或太小,反之亦然。
我怎樣纔能有效地衡量一切事物(所以每個人都能看到100%的遊戲內容),尤其是當多個不同分辨率的用戶玩遊戲時?
這完全是我所做的。我有一種方法是將實際寬度除以初始遊戲寬度,將實際高度除以初始遊戲高度,然後返回最小比率。 問題是,有時,如果用戶不斷調整窗體大小以增加更多寬度但不改變高度(僅限於左/右),對象的大小在特定點停止改變,但競技場保留適合自己的側面(競技場的側面減去50像素)。在這個用戶中,競技場大小和對象大小之間的比例丟失。 – BlueRay101
不要讓舞臺適合全寬。添加與電視信箱相似的黑色邊條 –
這是我將它縮放到最小比例(默認分辨率爲800x600,這是1920x1040)時的樣子:https://i.gyazo.com/6131c10dcfca3567b74de508f06b148c.png 競技場應該具有恆定的寬度和高度屬性,還是應該是動態的?如果它應該是動態的,我應該乘以寬度和高度之比的較小比例嗎?現在看起來很奇怪,右側有太多可用空間。 – BlueRay101