大家好,這裡是鐵匠史密斯~
今日我會介紹一些Ray Casting 算法的前置作業,不會寫到code
在開始演算法之前,我們需要定義所需的基礎,才可以了解每個現象的原理~
今日主角是fPlayerX
、 fPlayerY
fPlayerX
& fPlayerY
的定義看字面可知 fPlayerX
以及 fPlayerY
是玩家在遊戲中的地圖 map
的位置 (x, y)
我們已經確立一個大小 16 x 16 的 map
(由 1-D 的擴充字元陣列組成),如圖:
假如我們初始化玩家在(8, 3)的位置,代表:
float fPlayerX{ 8.0f };
float fPlayerY{ 3.0f };
特別的一點是,記得 fPlayerX
以及 fPlayerY
是 float
浮點數,之後會提及到,跟光(Ray)有關~
所以,在 16 x 16 ( nMapWidth = nMapHeight = 16
的世界地圖 map
上像是:
map[fPlayerY * nMapHeight + fPlayerX] = map[3 * 16 + 8] = map[56]
再次提醒: 不管是 screen
還是 map
, 我們都是以 1-D 矩陣來表示 2-D 的世界~
用圖表示的話,像是這樣:
fPlayerx
& fPlayery
map
為了延長30天的壽命,我需要把一些內容切得更精細lol
明日會再度回到 screen
, 來談談 screen
在遊戲世界中扮演什麼角色~
我們繼續走下去~