碰撞检测
刚才回答了一个H5游戏的问答。心血来潮,就想写写碰撞检测,废话不多说,直接怼。
矩形和矩形的碰撞检测
现有rect1 = {x:0,y:0,w:5,h:5};rect2 = {x:10,y:10,w:5,h:5};
。
rect1.x < rect2.x + rect2.w // rect1.x 代表左边界rect1.x + rect1.w > rect2.x // rect1.x + rect1.w 代表右边界rect1.y < rect2.y + rect2.h // rect1.y 代表上边界rect1.y + rect1.h > rect2.y // rect1.y + rect1.h 代表下边界//x和y可以看做起始点,x+w和y+h可以看做终止点。
圆形和圆形的碰撞检测
现有circle1={x:5,y:5,r:1};circle2={x:8,y:8,r:1}
。
Math.sqrt((circle2.x - circle1.x)**2+(circle2.y - circle1.y)**2)>circle2.r + circle1.r
圆形和矩形的碰撞检测
现有circle={x:5,y:5,r:1};rect={x:10,y:10,w:5,h:5};
。
//我们先找x轴,比较圆心点和矩形左边界,如果不是比对右边界。如果不存在左右就是存在中间呗。if(circle.xrect.x+rect.w){return rect.x+rect.w}else{return circle.x}//我们再去找y轴,同样的道理.if(circle.y rect.y+rect.h){return rect.y+rect.h}else{return circle.y}//有上面我们获得到的量,去计算就可以了,这就很简单了。
圆形与旋转矩形碰撞检测
可以看我下面的那个链接,我在这里先大体说一下原理,旋转部分是把矩形复原,把圆形通过矩形的中心点旋转,也可以理解为旋转画布,然后找圆形中心点,之后基本原理同上。
椭圆与椭圆碰撞检测
其他的检测手段
不管什么东西,老夫就是正面刚
1.canvas
的context.globalCompositeOperation="source-in";
destination-in
在源图像中显示目标图像。只有源图像之内的目标图像部分会被显示,源图像是透明的。source-in
在目标图像中显示源图像。只有目标图像之内的源图像部分会显示,目标图像是透明的。