[请益] 物体速度过快如何判断碰撞 (pygame)

楼主: ericabab (ㄍㄠˊ)   2020-03-16 17:19:53
版友好,个人是新手,出于兴趣最近在用pygame练习python
想到一个可能发生的问题
原本在判断碰撞时,是在每个frame将主角跟障碍物的hitbox看有没交集,
(假设主角跟障碍物都是长方形,因此只要用座标判断有没重叠)
但如果主角的速度太快,有可能在一个frame内移动已经超过障碍物的hitbox,
这样就会变成穿墙了。
个人的想法是将主角的起点到终点路径整个都算成hitbox,
但这样好像会有大量运算,因为新的hitbox就不是长方形了,
导致变成要将障碍物内每个点去判断有没撞到主角
不晓得这种情况正常是怎么处理呢?
主要是想问概念,不侷泥于语法跟语言,谢谢
作者: laikyo (六元)   2020-03-16 19:09:00
限制加速度
作者: wulouise (在线上!=在电脑前)   2020-03-16 19:39:00
只看一个frame的起终点算是一个长方体吧?预看下个frame会不会超过,超过就卡著
作者: BSpowerx (B.S)   2020-03-16 21:05:00
raycast路径
作者: NDark (溺于黑暗)   2020-03-17 01:00:00
用线去算碰撞不要用点去算碰撞.
作者: jackyT (Ubuntu5566)   2020-03-17 01:29:00
tunneling也可以用扫的去看https://docs.unity3d.com/Manual/ContinuousCollisionDetection.html被换行了 悲剧https://tinyurl.com/urx4af8
作者: aegis123321 (PE)   2020-03-17 08:34:00
问概念的话推荐box2D作者在GDC的演讲:https://www.youtube.com/watch?v=7_nKOET6zwI
作者: KuLanDot (库兰达克斯)   2020-03-18 00:08:00
之前有遇到一样的问题,我的作法是把上一个影格到这个影格的矩形的四个角产生四条路径,只要有任一条跟目标矩形交会的话,就算有碰撞像这张图 https://i.imgur.com/UamZvuV.png
作者: linaomasa (没穿裤子先生)   2020-03-20 12:33:00
我是用两线段取最短距离
作者: cjcat2266 (CJ Cat)   2020-03-20 17:34:00
四条路径的算法,特定方向和形状还是会有漏网之鱼shape cast的做法之一,是把要投射的形状A拿到被测试的形状B上,在B的范围内扫出一个更大的区域(Minkowski Sum),然后A本身缩成一个点,从该点对之前扫出来的区域进行ray cast

Links booklink

Contact Us: admin [ a t ] ucptt.com