創作內容

2 GP

用C/C++做出簡單的3D 光線投射(Ray Casting)

作者:evanlin96069│2020-01-23 22:59:30│巴幣:4│人氣:295


寒假沒事做
把舊的程式挖出來改一下
雖然和上一次比看起來變化很大
不過其實核心的部分都沒改
只是加上一些新的東西和改變輸出的方式
(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. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

2喜歡★evanlin96069 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:FGO 陸服 聖誕四期 ... 後一篇:FGO 抽卡紀錄...

追蹤私訊切換新版閱覽

作品資料夾

huaing123道德/良知在哪裡?🙂
正當路不走,盡搞些下三濫的手段,老愛玩陰的,真的不知道該說些甚麼🙂🙃🙂🙃看更多我要大聲說昨天22:27


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】