2 GP
用C/C++做出簡單的3D 光線投射(Ray Casting)
作者:evanlin96069│2020-01-23 22:59:30│巴幣:4│人氣:296
寒假沒事做
把舊的程式挖出來改一下
雖然和上一次比看起來變化很大
不過其實核心的部分都沒改
只是加上一些新的東西和改變輸出的方式
(C和C++沒有內建2D繪圖的函式庫 要自己裝)
這次差不多寫了一整天...
更新內容
-改變輸出方式
-改善魚眼問題
-解決畫面更新閃爍問題
-牆面能有材質
-新增左右移動功能
-允許同時按一個以上的按鍵
關於材質的部分
先前已經用從玩家視野最右方開始
發射一條雷射
一路往左
藉此得出玩家視野內每一個角度到牆面的距離
進一步求出視野內每一個角度螢幕應顯示出的牆面高度
但要求出該角度時螢幕要顯示哪一部分的材質
要知道的不只是和牆面的距離和雷射打到哪塊牆
更要知道準確的撞擊座標和打到牆的哪一部分
已知
pX,pY,θ
發射雷射偵測牆面的距離d
同時也得到mX,mY
hX=pX+sinθ*d
hY=pY+cosθ*d
算出準確的碰撞點
arctan((hY-mY)/(hX-mX))
算出碰撞點是在牆中心幾度角的位置
藉此推出是碰撞在牆的哪一面
判斷出是要用hX還是hY
透過該值算出碰撞點是在牆面哪個部分
並取出該部分對應的材質
目前預計的目標:
-物件化(現在程式開始有點亂了 如果要做更多功能應該會需要)
-讓地板和天花板也有材質(這會需要更多數學運算)
-加上以前寫的迷宮生成器
-讓遊戲有敵人或其他物體
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4662580
All rights reserved. 版權所有,保留一切權利