看板 GameDesign 關於我們 聯絡資訊
版友好,個人是新手,出於興趣最近在用pygame練習python 想到一個可能發生的問題 原本在判斷碰撞時,是在每個frame將主角跟障礙物的hitbox看有沒交集, (假設主角跟障礙物都是長方形,因此只要用座標判斷有沒重疊) 但如果主角的速度太快,有可能在一個frame內移動已經超過障礙物的hitbox, 這樣就會變成穿牆了。 個人的想法是將主角的起點到終點路徑整個都算成hitbox, 但這樣好像會有大量運算,因為新的hitbox就不是長方形了, 導致變成要將障礙物內每個點去判斷有沒撞到主角 不曉得這種情況正常是怎麼處理呢? 主要是想問概念,不侷泥於語法跟語言,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.211.24 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1584350395.A.AB5.html
laikyo: 限制加速度 03/16 19:09
如果是真的想跑這麼快呢?
wulouise: 只看一個frame的起終點算是一個長方體吧?預看下個frame 03/16 19:39
wulouise: 會不會超過,超過就卡著 03/16 19:39
如果路徑是斜的,就不是長方體了?
BSpowerx: raycast路徑 03/16 21:05
我來google查查,謝謝
NDark: 用線去算碰撞不要用點去算碰撞. 03/17 01:00
jackyT: tunneling也可以用掃的去看 03/17 01:29
jackyT: ection.html 03/17 01:30
jackyT: 被換行了 悲劇 03/17 01:30
jackyT: https://tinyurl.com/urx4af8 03/17 01:30
aegis123321: 問概念的話推薦box2D作者在GDC的演講: 03/17 08:34
aegis123321: https://www.youtube.com/watch?v=7_nKOET6zwI 03/17 08:34
感謝樓上幾位的資訊! ※ 編輯: ericabab (36.230.211.24 臺灣), 03/17/2020 17:59:51
KuLanDot: 之前有遇到一樣的問題,我的作法是把上一個影格到 03/18 00:08
KuLanDot: 這個影格的矩形的四個角產生四條路徑,只要有任一條跟 03/18 00:09
KuLanDot: 目標矩形交會的話,就算有碰撞 03/18 00:09
KuLanDot: 像這張圖 https://i.imgur.com/UamZvuV.png 03/18 00:09
linaomasa: 我是用兩線段取最短距離 03/20 12:33
cjcat2266: 四條路徑的算法,特定方向和形狀還是會有漏網之魚 03/20 17:34
cjcat2266: shape cast的做法之一,是把要投射的形狀A拿到被測試的 03/20 17:34
cjcat2266: 形狀B上,在B的範圍內掃出一個更大的區域 03/20 17:35
cjcat2266: (Minkowski Sum),然後A本身縮成一個點,從該點對之前 03/20 17:36
cjcat2266: 掃出來的區域進行ray cast 03/20 17:36