LV. 11
GP 68

【心得】遊戲中的多邊形碰撞檢測

樓主 阿維 md9830415
GP108 BP-

作者標示-非商業性

本授權條款允許使用者重製、散布、傳輸以及修改著作,但不得為商業目的之使用。使用時必須按照著作人指定的方式表彰其姓名。



應該很多人對電腦遊戲中如何處理碰撞處理感興趣,希望大家在讀完這篇文章後能了解電腦是如何偵測物體的碰撞。


而這篇文有三個主要目的 :
  1. 對遊戲中的碰撞感興趣,卻不會寫程式的人可以了解原理
  2. 讓有能力實作的人,可以跟著文章寫出簡易的多邊形碰撞檢測
  3. 自己的學習筆記

這次要來介紹的主題是分離軸碰撞檢測(Separating Axis Theorem, SAT)
分離軸定理通常用語檢測兩個多邊形或多邊形與圓之間的碰撞,跟所有演算法一樣他具有一定的優勢與缺點。

我會慢慢講解背後的原理,並使用程式碼做簡易的範例。

範例所使用的語言為Java Script,加上自製的向量函式庫,但我想觀念懂了應該不會有太大問題。

讓我們開始吧。


目錄

  1. 矩形碰撞檢測
  2. 什麼是分離軸檢測?
  3. 知識補充1 – 向量
  4. 知識補充2 – 旋轉變換
  5. 如何取得分離軸上的投影?
  6. 編寫程式碼-投影、旋轉與判斷
  7. 如何取得分離軸?
  8. 粗糙的矩形檢測
  9. 編寫程式碼 – 多邊形與多邊形
  10. 編寫程式碼 – 多邊形與圓
  11. SAT的總結
  12. 多物體的碰撞優化
  13. 動態物體間的碰撞檢測
  14. 結尾與感想
  15. 參考資源

因為文章內容有點長,不好移植到這裡,所以我直接放我的文章連結


希望能幫助到一些對碰撞處理有興趣的人
108
-
未登入的勇者,要加入討論嗎?
板務人員:歡迎申請板主

精華區有 10 筆文章
目前無人維護,申請組長


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

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