iT邦幫忙

2025 iThome 鐵人賽

DAY 5
1
自我挑戰組

用 C++ 實作簡易第一人稱視角遊戲:從入門到理解 Ray Casting系列 第 5

Day 5 | Ray Casting 前置 : fPlayerX、fPlayerY ─ 空間座標與陣列的對應關係

  • 分享至 

  • xImage
  •  

大家好,這裡是鐵匠史密斯~
今日我會介紹一些Ray Casting 算法的前置作業,不會寫到code
在開始演算法之前,我們需要定義所需的基礎,才可以了解每個現象的原理~
今日主角是fPlayerXfPlayerY

fPlayerX & fPlayerY 的定義

看字面可知 fPlayerX 以及 fPlayerY 是玩家在遊戲中的地圖 map 的位置 (x, y)
我們已經確立一個大小 16 x 16 的 map(由 1-D 的擴充字元陣列組成),如圖:

https://ithelp.ithome.com.tw/upload/images/20250805/20157653uvc927ny5n.png

假如我們初始化玩家在(8, 3)的位置,代表:

float fPlayerX{ 8.0f };
float fPlayerY{ 3.0f };

特別的一點是,記得 fPlayerX 以及 fPlayerYfloat 浮點數,之後會提及到,跟光(Ray)有關~
所以,在 16 x 16 ( nMapWidth = nMapHeight = 16 的世界地圖 map 上像是:

map[fPlayerY * nMapHeight + fPlayerX] = map[3 * 16 + 8] = map[56]

再次提醒: 不管是 screen 還是 map , 我們都是以 1-D 矩陣來表示 2-D 的世界~
用圖表示的話,像是這樣:
https://ithelp.ithome.com.tw/upload/images/20250805/20157653alqwvXGVJy.png

今日總結 :

  • 玩家座標 fPlayerx & fPlayery
  • 它們如何對應到 1-D 擴充字元陣列所組成的 map
  • 空間座標與陣列的對應關係

為了延長30天的壽命,我需要把一些內容切得更精細lol
明日會再度回到 screen , 來談談 screen 在遊戲世界中扮演什麼角色~
我們繼續走下去~


上一篇
Day 4 | 解析 map:用 wstring 寫迷宮地圖
下一篇
Day 6 | Ray Casting 前置 : screen ─ 玩家視野
系列文
用 C++ 實作簡易第一人稱視角遊戲:從入門到理解 Ray Casting30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言