2013-09-26 53 views
0

我正在構建2人遊戲,此時滾動位置由2個角色位置的中點決定。但我有一個問題。當角色離得很遠時,屏幕的滾動位置處於這些角色的中間,並且因爲他們移出視野而看不到任何人。根據角色位置縮放遊戲世界的算法

因此,我正在尋找一種算法來確定世界應該處於可視角度的尺度。

您的時間很有價值。

回答

1

假設您的屏幕(或窗口)是固定大小,(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

1

沒有有任何信息作爲單位,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 

這是假定方視與所有時間爲中心的球員。