https://github.com/beadcaptain/beadcaptain.github.io

遊戲連結

Sourcecode

  • demo
  • demo1
    上下左右、空白鍵衝刺、T 開啟Debug、 Z 攻擊、X 遠程
  • demo2
    滑鼠拖曳發射小球,來觀看多邊形碰撞回饋

目前進度

  • 攝影機
  • 動態碰撞盒
  • 事件觸發器
  • 自訂地圖存取
  • Debug(圖層、碰撞層顯示)

地圖編輯與讀取

透過json檔案生成對應的地圖物件,如動畫、碰撞、物件等

依照編輯時的圖層,建立對應的顯示順序

攝影機、Debug

  • 加入Debug功能方便測試
  • 只顯示視線範圍內的物件
  • 渲染物件的動態圖層顯示
  • 可調整攝影機的追蹤範圍與目標

碰撞盒:多邊形碰撞與回饋

http://davidhsu666.com/archives/gamecollisiondetection/

透過分離軸定理,解決普通AABB碰撞檢測無法處裡的多邊形與圓形

建立自製碰撞函示庫,並透過最小穿透量來處理物體間的分離,將碰撞盒整合至物體中並加以應用

動態碰撞盒、敵人移動、事件觸發器

-透過動態碰撞盒處理揮砍的動作

-加入狀態切換管理,攻擊開始->攻擊中->攻擊結束

  • 透過事件觸發器處理各式地圖事件
  • 像是地圖上下坡,需要切換碰撞層,與NPC對話區域的觸發器,或是走斜坡時會被減速等等

碰撞效能的優化

Quadtree_in_2d

如果每個物體之間都進行碰撞檢測,會消耗大量的效能,複雜度來到O(N^2)

例如: 兩物體在地圖的對角線,根本不會碰撞,但還是執行檢測

透過四叉樹(Quad Tree)來進行空間上的劃分

將複雜度降低至O(N log(N))

架構與後續規劃

  • UI選單、Menu、功能列操作
  • 對話方塊與對話事件(對話樹)
  • 腳本編輯與腳本觸發器,如RPG遊戲中的串場事件
  • 優化物件架構,方便修改

最後修改日期: 2020-10-16

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。