欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS封装一个碰撞检测函数

程序员文章站 2024-03-16 20:37:52
...

碰撞检测函数

objA和objB是两个对象 两个对象中的数据 要能够描述出一个矩形

objA和objB 一定要有四个属性 x,y,width,height

function isCollide(objA,objB){
	// 如果发现 只要x,y,width,height中出现了 undefined 我们就要主动的抛出一个异常 程序不再执行
	if(isUndefined(objA.x) || isUndefined(objA.y) || isUndefined(objA.width) || isUndefined(objA.height) ||
	   isUndefined(objB.x) || isUndefined(objB.y) || isUndefined(objB.width) || isUndefined(objB.height))
	{
		//主动抛出错误
		throw new Error('参数错误!'+ ' ' + JSON.stringify(objA) + ' ' +JSON.stringify(objB));
	}
	var centerA=getCenter(objA);
	var centerB=getCenter(objB);
	
	// 2个矩形的几何中心点 在x,y轴上的距离,必须都小于 两个矩形的宽/高之和的1/2,这种情况下 两个就发生了碰撞,函数输出true
	return Math.abs(centerA.x-centerB.x) < (objA.width + objB.width)/2 && 
	Math.abs(centerA.y-centerB.y) < (objA.height + objB.height)/2;
}

 2个矩形的几何中心点 在x,y轴上的距离,必须都小于 两个矩形的宽/高之和的1/2,这种情况下 两个就发生了碰撞,函数输出true