正在用JavaScript+Canvas实现一个打砖块游戏,碰撞算法参考的实现思路是https://www.zhihu.com/questio...现在的问题是检测到小球与矩形方块碰撞后 怎么判断小球接下来的运动方向?我认为这里有两种情况 第一种是从上下左右四个边撞击 然后让小球一个方向(比如x轴)上的速度值不变 让另一个方向(比如y轴)的速度取负数 这样小球就有一个反弹的效果了(类似于镜面反弹)第二种情况我觉得应该是从四个角撞击 这个时候就应该把两个方向的速度都取负值 小球就会向运动来的方向“弹回去”第一种情况很好实现,,关键是第二种情况该怎么判断呢? 我不知道该用什么来判断小球是否是撞击的四个角如果思路不对 请指正。。/2017-8-10更新/利用我在评论里发现的那种夹角的办法把判断边和角撞击实现了。。但是新的问题是 我是在移动小球位置之后才判断是否碰撞的 有的时候会出现小球的位置已经在砖块里面去了 才去判断撞击 这样就会形成死循环在小球在砖块内不停运动的鬼畜效果。。。然后我查到一个叫“分离轴定理”的算法,,貌似可以判断这个“最小平移量” http://blog.mn886.net/chenjia...http://web.jobbole.com/90472/但是这两个链接里的代码看不太懂。。有大神能简单用js写写利用分离轴定理来实现矩形与圆碰撞的算法么。。包括碰撞以后反弹的效果(也就是沿着最小平移量的反方向)
1 回答

HUX布斯
TA贡献1876条经验 获得超6个赞
得到最短距离矢量后可以进一步得到 "碰撞点",即 矢量p - 矢量u
得到的点。在角上碰撞的时候,这个碰撞点也应该在矩形的角上。
另外 "小球就会向运动来的方向弹回去" 这个和生活经验是不一致的,可以试试朝桌脚滚一个球看看。你可能需要再想一下球的受力和运动情况。
添加回答
举报
0/150
提交
取消