看板 GameDesign 關於我們 聯絡資訊
碰撞的演算法有分兩種: 1. discrete 2. continuous 你說的問題很容易發生在discrete collision detection(DCD)上 通常叫做tunnel effect, 很常發生在高速物體對soup(triangle mesh) 之間的碰狀, 因為soup是沒有厚度的 為了解決這個問題有兩個辦法 1. 在單一frame作多次碰撞, 讓delta time(dt)變小, dt變小 同樣的速度下位移量也變小. 缺點是計算量也變大 2. 用continuous collision detection(CCD) CCD的原理是把物體的collision沿著移動方向擴張 但是目前常用(realtime)的CCD只能處理線性移動 轉動沒有辦法處理 剩下的就是運用的技巧了. ※ 引述《F23ko (純潔)》之銘言: : 借標題問個問題 : 假設有高速移動的炮彈 (30像素/frame 以上 差不多0.3秒穿越螢幕) : 對著另一高速物件射擊 : 要怎麼樣才能有效率又保有正確性的計算碰撞呢? : 因為,在兩個frame間,物體的位置變化很大 : 用傳統的畫方格計算,會很容易漏掉 : 漏掉的狀況: : 理論上應該要撞到,但每個frame的判斷都是沒撞到 : ◎ frame2 : ↑ : │ : ●──┼─→●frame2 : frame1│ : │ : ◎frame1 : 我自己想兩個方法 : 1.把每秒的計算次數調高,但繪圖維持每秒60frame不變 : 2.數學法,把移動路徑算出來,再計算有沒有重疊 : 但都覺得可能會出問題.... : 請問一般狀況下,處理高速碰撞的話,都怎麼解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.139.157 ※ 編輯: ttshaw 來自: 220.128.139.157 (03/22 12:02)
F23ko:1.比較簡單 2.的效率可能比較高.... 我猜 03/22 20:01
etrexetrex:有沒有可能先計算兩路徑的交點 03/22 23:50
etrexetrex:再計算A物件在交點時,是否發生碰撞 03/22 23:51
etrexetrex:再計算B物件在交點時,是否發生碰撞 03/22 23:51
ttshaw:有時候路徑沒有交叉也是有碰撞的, 因為不是particle 03/23 11:18