作者ericabab (ㄍㄠˊ)
看板GameDesign
标题[请益] 物体速度过快如何判断碰撞 (pygame)
时间Mon Mar 16 17:19:53 2020
版友好,个人是新手,出於兴趣最近在用pygame练习python
想到一个可能发生的问题
原本在判断碰撞时,是在每个frame将主角跟障碍物的hitbox看有没交集,
(假设主角跟障碍物都是长方形,因此只要用座标判断有没重叠)
但如果主角的速度太快,有可能在一个frame内移动已经超过障碍物的hitbox,
这样就会变成穿墙了。
个人的想法是将主角的起点到终点路径整个都算成hitbox,
但这样好像会有大量运算,因为新的hitbox就不是长方形了,
导致变成要将障碍物内每个点去判断有没撞到主角
不晓得这种情况正常是怎麽处理呢?
主要是想问概念,不局泥於语法跟语言,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.230.211.24 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1584350395.A.AB5.html
1F:→ laikyo: 限制加速度 03/16 19:09
如果是真的想跑这麽快呢?
2F:推 wulouise: 只看一个frame的起终点算是一个长方体吧?预看下个frame 03/16 19:39
3F:→ wulouise: 会不会超过,超过就卡着 03/16 19:39
如果路径是斜的,就不是长方体了?
4F:推 BSpowerx: raycast路径 03/16 21:05
我来google查查,谢谢
5F:推 NDark: 用线去算碰撞不要用点去算碰撞. 03/17 01:00
6F:推 jackyT: tunneling也可以用扫的去看 03/17 01:29
8F:→ jackyT: ection.html 03/17 01:30
9F:→ jackyT: 被换行了 悲剧 03/17 01:30
11F:推 aegis123321: 问概念的话推荐box2D作者在GDC的演讲: 03/17 08:34
感谢楼上几位的资讯!
※ 编辑: ericabab (36.230.211.24 台湾), 03/17/2020 17:59:51
13F:推 KuLanDot: 之前有遇到一样的问题,我的作法是把上一个影格到 03/18 00:08
14F:→ KuLanDot: 这个影格的矩形的四个角产生四条路径,只要有任一条跟 03/18 00:09
15F:→ KuLanDot: 目标矩形交会的话,就算有碰撞 03/18 00:09
17F:推 linaomasa: 我是用两线段取最短距离 03/20 12:33
18F:推 cjcat2266: 四条路径的算法,特定方向和形状还是会有漏网之鱼 03/20 17:34
19F:→ cjcat2266: shape cast的做法之一,是把要投射的形状A拿到被测试的 03/20 17:34
20F:→ cjcat2266: 形状B上,在B的范围内扫出一个更大的区域 03/20 17:35
21F:→ cjcat2266: (Minkowski Sum),然後A本身缩成一个点,从该点对之前 03/20 17:36
22F:→ cjcat2266: 扫出来的区域进行ray cast 03/20 17:36