iT邦幫忙

2025 iThome 鐵人賽

DAY 27
1

哈囉哈囉,這裡是鐵匠史密斯~
我們已經完成地板的渲染了,接下來就是解決角色橫移的問題了

角色的橫移, fPlayerA 又上用場了~

我們還是上個簡單的圖,讓大家記得計算機圖學的座標以及旋轉時角度的 +/- 規則:
https://ithelp.ithome.com.tw/upload/images/20250827/20157653Sem97XJeKi.png
目前訂定的規則是:

  • fPlayerA = 0 的左邊(逆時針)為 +
  • fPlayerA = 0 的右邊(順時針)為 -

所以呢,如果我們角色要向左橫移,必須要找到當下 fPlayerA + pi/2 的單位向量
反之亦然,向右橫移,必續找到當下 fPlayerA - pi/2 的單位向量
我們再藉由 GetAsyncKeyState() 的功能,來偵測 A / D 按鍵,供 左 / 右 橫移使用
得出:

// Move Left&Right in the map
if (GetAsyncKeyState((unsigned short)'A') & 0x8000)
{
    fPlayerX += cosf(fPlayerA) * fElaspedTime * 5;
    fPlayerY -= sinf(fPlayerA) * fElaspedTime * 5;
}

if (GetAsyncKeyState((unsigned short)'D') & 0x8000)
{
    fPlayerX -= cosf(fPlayerA) * fElaspedTime * 5;
    fPlayerY += sinf(fPlayerA) * fElaspedTime * 5;
}

這樣我們就可以讓角色進行左右橫移了!

今日總結

  • W / S 按鍵 : 進行左 / 右 橫移
  • 左 / 右 橫移的關鍵 : 找到 fPlayerA + pi/2 以及 fPlayerA - pi/2 的單位向量

明天我們會討論一下如何找到玩家 左 / 右 的單位向量
讓我們繼續走下去~


上一篇
Day 26 | Ray Casting 渲染地板 - Part 2
下一篇
Day 28 | Ray Casting 角色橫移 - Part 2
系列文
用 C++ 實作簡易第一人稱視角遊戲:從入門到理解 Ray Casting30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言