PIXI_碰撞检测

本文介绍了使用PIXI.js进行碰撞检测的理论基础和实现代码,并展示了实际效果。尽管距离计算可能存在误差,导致视觉上的碰撞消失现象。

PIXI_碰撞检测

理论

【碰撞判断】
	1、根据元素的特点划定假想圆大小,将元素的锚点设置为中心作为假想圆的圆心
	元素宽度的一半作为假想圆的半径
	设置轴心点.anchor.set(0.5,0.5)
	2、计算碰撞距离:碰撞距离==两个元素假想圆半径之和
	3、计算两个元素的X轴距离,Y轴距离
	x轴距离(元素1.x - 元素2.x)
	var xl = zd.x - enemy.x;
	y轴距离(元素1.y - 元素2.y)
	4、将x轴距离与y轴距离作为直角三角形的两条边,利用勾股定理计算斜边长度。
	xl*xl+yl*yl = 间距的平方
	5、碰撞判断:如果两个元素的距离<=碰撞距离,视为发生碰撞

代码

		//设置舞台
		var app = new PIXI.Application(500, 700);
		document.body.appendChild(app.view);
		//添加敌机
		var enemy = new PIXI.Sprite.fromImage('../img/enemy.png');
		enemy.x = 150;
		enemy.y = 100;
		enemy.anchor.set(0.5, 0.5)
		app.stage.addChild(enemy)

		//子弹
		var zd = new PIXI.Sprite.fromImage('../img/bullet_1.png')
		zd.x = 170;
		zd.y = 450;
		zd.anchor.set(0.5, 0.5)
		app.stage.addChild(zd);

		//自定义帧频函数
		function animate() {
			zd.y -= 3;

			//【碰撞判断】
			//1、根据元素的特点划定假想圆大小,将元素的锚点设置为中心作为假想圆的圆心
			//元素宽度的一半作为假想圆的半径
			//设置轴心点.anchor.set(0.5,0.5)
			// enemy 宽度:104,假想圆半径:52
			// zd    宽度:50, 假想圆半径25

			//2、计算碰撞距离:碰撞距离==两个元素假想圆半径之和
			var sum = 52 + 25;

			//3、计算两个元素的X轴距离,Y轴距离
			//x轴距离(元素1.x - 元素2.x)
			var xl = zd.x - enemy.x;
			//y轴距离(元素1.y - 元素2.y)
			var yl = zd.y - enemy.y;

			//4、将x轴距离与y轴距离作为直角三角形的两条边,利用勾股定理计算斜边长度。
			//xl*xl+yl*yl = 间距的平方
			
			//5、碰撞判断:如果两个元素的距离<=碰撞距离,视为发生碰撞
			// if(两个元素的间距平方<=碰撞距离平方){}
			if(xl*xl+yl*yl <=sum*sum){
				//碰撞后执行的代码
				//将敌机从应用窗口移除
				app.stage.removeChild(enemy);
				app.stage.removeChild(zd);
			}
			//获取平方根:Math.sqrt(数值);


		}
		
		app.ticker.add(animate);

效果图

在这里插入图片描述
距离可能没有计算好,所以看起来没有碰到就已经消失了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值