请问如何处理游戏中的斜坡?
gamemaker吧
全部回复
仅看楼主
level 1
bhbhxy
楼主
如图所示,我在为图块添加碰撞时发现斜坡这一部分不好处理,它只是标准图块的3分之1或更小一些,碰撞点不好建立,请问大神们都是怎么处理斜坡的呢?
2016年12月25日 05点12分
1
level 12
♬-xwj-♬
GMS内置了了box2d物理引擎,用b2d试试?
2016年12月25日 06点12分
2
bhbhxy
具体应该怎么操作呢?现在这个斜坡是一个32X32的tile,怎么应用上box2d?
2016年12月25日 06点12分
level 9
微子喵
gms的自带物理引擎也就是box2d,里面可以设置碰撞盒的形状,符合一定条件的多边形都可以
如果gm8或不用物理引擎需要逐像素检测
2016年12月25日 12点12分
3
bhbhxy
明白了,非常感谢~
2016年12月25日 12点12分
level 2
第八根琴弦
如果你还没有做好,我推荐你看看这个
The guide to implementing 2D platformers
http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers
2017年01月11日 08点01分
5
bhbhxy
已经看过了,这篇文章只是介绍了下理论,但具体实现没说。代码实现上有很多细节要考虑,比如怎么解决当速度过快时物体会穿过障碍物。
2017年01月11日 09点01分
blovestorm
@bhbhxy
简单点用直线碰撞检测,碰撞坐标用二分法确定。
2017年01月11日 13点01分
bhbhxy
@blovestorm
二分法是指x轴和y轴分开判断吗?
2017年01月11日 13点01分
blovestorm
@bhbhxy
如果子弹角度为0进行平射,那么我们只需判断x轴坐标即可。带角度的子弹无非加入了三角函数而已,原理是相通的。
2017年01月12日 03点01分
level 1
bhbhxy
楼主
物体下落速度过快,同时与左下角和正下方的地面碰撞,这种情况应该只修正y轴并且忽略x轴方向的碰撞。
2017年01月12日 03点01分
6
blovestorm
建议将所有碰撞物体归属为同一父类,这样用直线检测父类即可,然后用二分法确定y坐标(碰撞与未碰撞的临界点)。
2017年01月12日 03点01分
bhbhxy
@blovestorm
不是很明白,是把所有碰撞物体作为一个整体来看吗?如果地形不是很整齐,中间有小缝隙呢?这样就不能作为一个整体了吧。如果水平速度足够快,这种情况也会发生在x轴上。如果物体同时具有水平速度和垂直速度,应该判断哪个方向的碰撞?
2017年01月12日 04点01分
blovestorm
GM碰撞函数不是要写被检测对象吗?我意思是所有检测碰撞的对象,都有一个父对象,这样你写子弹碰撞函数时,写一个被检测对象不就可以了吗。和规则不规则没关系。
2017年01月12日 04点01分
bhbhxy
@blovestorm
明白了,谢谢
2017年01月12日 05点01分
1