三維的世界
因?yàn)槭峭娼謾C(jī)和FC長大的,對像素風(fēng)的游戲有一些特殊的感情。所以學(xué)Unity時(shí),無法理解為什么一定要有一個(gè)相機(jī),為什么2D游戲依舊有相機(jī)的概念......
第一次開發(fā)游戲用的是系統(tǒng)自帶的繪圖API,所以我認(rèn)為游戲的世界就只是一塊畫布,根據(jù)玩家的輸入來畫不同的東西。上個(gè)世紀(jì)的人應(yīng)該都是帶著這種思維來開發(fā)游戲的吧,然而3D游戲普及以后,這種想法就成為了歷史的塵埃了。
當(dāng)然,這種過時(shí)的想法并沒有沒什么大的影響。只是當(dāng)我嘗試?yán)斫?D的世界時(shí),腦海里什么都沒有。我在(0,0,0)的位置,一個(gè)方塊在(0,0,1)的位置。只給出0,0,0和0,0,1兩個(gè)坐標(biāo)的話,腦海里完全沒有印象。我拼命在腦海里構(gòu)建出三維的世界,試圖把自己和另一個(gè)物體放進(jìn)去,但得到的依舊是一片空白。我漸漸明白,這是沒有攝像機(jī)的緣故。
如果承認(rèn)攝像機(jī)的存在,應(yīng)該就能夠看到眼前的方塊了。
已經(jīng)過去快10天了,我依舊沒有理解世界坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo),也就是W2S的意義。
我以為是知識量不夠,重新復(fù)習(xí)了三角函數(shù),學(xué)了矩陣,向量......
理論上的步驟能理解,然而實(shí)際操作起來,究竟為什么可以把3D轉(zhuǎn)成2D,背后的依據(jù)是什么依舊沒有概念。還是書讀的太少了,各種英文的資料看不懂,知乎上的大多講不清楚......
總共兩種方法,一種是乘矩陣,至于為什么乘矩陣就能轉(zhuǎn)換,以及矩陣的意義,沒人說清楚。
另一種容易理解,用反三角函數(shù)算出一個(gè)角度,這個(gè)角度能夠反映在X軸和Y軸上,物體離屏幕中間的距離。最終得到一個(gè)[0,1]的值,直接乘屏幕寬高就可以得到物體位置。然而我失敗了,atan和asin的返回值不對勁,想破腦袋也沒找到原因。
W2S并不是很難理解的問題,我開始懷疑自己是一個(gè)弱智,但馬上又告訴自己,只是缺乏了一些知識,把那些知識補(bǔ)上就能夠理解W2S了。然而沒有用,學(xué)了Opengl和DX依舊理解不了W2S的意義。
當(dāng)然,其實(shí)沒必要執(zhí)著于這件事,游戲開發(fā)的話,游戲引擎會(huì)直接提供W2S函數(shù),ESP的話,可以直接從游戲的dll里找到坐標(biāo)轉(zhuǎn)換的代碼......有一萬條路可以做到降維打擊,可每條路最終還是通向現(xiàn)在正在嘗試通過的路。某天那些路被封死,這條路也會(huì)存在。
可能,我真的活在二次元,理解不了高維生物的世界?沒有這種道理,應(yīng)該只是太笨而已。
即使真的是這樣,總有一天我會(huì)抵達(dá)三維的世界,然后掌握降維打擊的力量。