我正在構建2人遊戲,此時滾動位置由2個角色位置的中點決定。但我有一個問題。當角色離得很遠時,屏幕的滾動位置處於這些角色的中間,並且因爲他們移出視野而看不到任何人。根據角色位置縮放遊戲世界的算法
因此,我正在尋找一種算法來確定世界應該處於可視角度的尺度。
您的時間很有價值。
我正在構建2人遊戲,此時滾動位置由2個角色位置的中點決定。但我有一個問題。當角色離得很遠時,屏幕的滾動位置處於這些角色的中間,並且因爲他們移出視野而看不到任何人。根據角色位置縮放遊戲世界的算法
因此,我正在尋找一種算法來確定世界應該處於可視角度的尺度。
您的時間很有價值。
假設您的屏幕(或窗口)是固定大小,(Screen_Width, Screen_Height)
。
現在計算兩個玩家之間的X和Y距離。
xdist = abs(Player2.x - Player1.x);
ydist = abs(Player2.y - Player1.y);
計算x和y縮放因子:
xscale = Screen_Width/xdist;
yscale = Screen_Height/ydist;
並採取較小的值。如果scale >= 1
,那麼玩家將適合在屏幕上。你不必做任何縮放。你可以找到中點並繪製。
如果scale < 1
,那麼你必須縮放所有的座標scale
。
沒有有任何信息作爲單位,IDE,或者您正在使用此語言的類型是可能的解決方案:
function object calcScale(screen, player1, player2, midpoint):
width = abs(player1.x-player2.x)
height = abs(player1.y-player2.y)
width = max(width,height)
height = width
x = min(player1.x, player2.x, midpoint.x-width/2)
y = max(player1.y, player2.y, midpoint.y+height/2)
s = (screen.width*screen.height)/(width*height)
newscreen= {startx:x, starty:y, scale:s}
return newscreen
這是假定方視與所有時間爲中心的球員。