2017-01-07 104 views
-1

最近我在想創造我自己的軸X/Y,尤其是「X」,但在那場比賽中,我要創建它,也有低於0沒有價值,因爲pointX = 0在屏幕左邊界上。創建X和Y軸的遊戲

我想創建功能,這將順利統計所有的值取決於我們的遊戲分辨率X.

例如:

參數:最小值,最大值,screenX,cursorPosition

if(cursorPosition == screenWidth/2) then 
    return 0 
end 

當光標位置低於屏幕寬度/ 2,函數會順利計數之間值-0和最小值(最小值將是,當光標位置= 0)

和相同的時光標pos是上述屏幕寬度/ 2,函數會順利計數0和最大值之間的值(最大值將是當光標位置=我們screenX)

任何人都可以解釋,我怎樣才能達到那樣的效果? :)

Regards

+0

您將需要某種形式的二維LUA的遊戲引擎。試試LÖVE。 – devRicher

+0

其實我寫的代碼,以遊戲稱爲Multi飛車聖安地列斯,我已經有了變量,如screenX和光標的位置,但我不知道如何創建正確的方式來算,價值觀;/ – Koczkodan

+0

好吧,我做了它,謝謝你的幫助 – Koczkodan

回答

0

使用線性插值來更改動態範圍。讓假設你的觀點有xs,ys分辨率和點(0,0)是左上角。所以每各軸的動態範圍是:

x = <0,xs-1> 
y = <0,ys-1> 

,並希望將其更改爲:

x' = <minx,maxx> 
y' = <miny,maxy> 

所以做到這一點:

x' = minx + x*(maxx-minx)/(xs-1) 
y' = miny + y*(maxy-miny)/(ys-1) 

,如果你需要回去任何原因:

x = (x'-minx)*(xs-1)/(maxx-minx) 
y = (y'-miny)*(ys-1)/(maxy-miny) 

其中(minx,miny)是左上角,(maxx,maxy)是右下角。如果您還想更改任何軸,那麼你可以爲minx<maxx不需要這個的跡象所以才換的初始值,從而minx>maxx

lua沒有編碼但如果你的值是浮動的,那麼要小心整數舍入,同時把整數和浮點數混合在一起。