Pixi.js|H5二维游戏中俩元素碰撞判断

Pixi.js|H5二维游戏中俩元素碰撞判断

作者: 梦飞

乐享生活,分享极致

手机扫码查看

标签:

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

<section style="height:500px;">
<iframe id="iframe570" name="iframe570" width="400" height="500" srcdoc="<!DOCTYPE html><html><body style='overflow:hidden;margin:0px;width:400px;height:500px;'></body><script src='../../js/jquery-1.8.3.min.js'></script><script src='../../js/pixi.js'></script><script type='text/javascript'>var app = new PIXI.Application(400,500);
document.body.appendChild(app.view);
//添加飞机
var plane = PIXI.Sprite.fromImage(&quot;res/plane/plane_blue_01.png&quot;);
plane.anchor.set(0.5,0.5);
plane.x = 200;
plane.y = 400;
app.stage.addChild(plane);

//设置飞机plane,鼠标跟随
app.stage.interactive = true;
app.stage.on('mousemove',movePlane);
function movePlane(event) {
var pos=event.data.getLocalPosition(app.stage);
plane.x = pos.x;
plane.y = pos.y;
}


//存储敌机的数组
var enemyList = [];

//存储子弹的数组
var bulletList = [];


//帧频函数
app.ticker.add(animate);
function animate() {
addEnemy();//添加敌机
moveEnemy();//移动敌机

addBullet();//添加子弹
moveBullet();//移动子弹

crash();//敌机与子弹碰撞
}


//添加敌机
var a = 0;
function addEnemy() {
if(a == 20) {
//创建敌机
var enemy = PIXI.Sprite.fromImage(&quot;res/plane/enemy_04.png&quot;);
enemy.anchor.set(0.5,0.5);
enemy.x = Math.random() * 400;
app.stage.addChild(enemy);

//将敌机添加到数组
enemyList.push(enemy);

a = 0;
}
a++;
}


//移动敌机
function moveEnemy() {
for(var i=enemyList.length-1;i>=0;i--) {
var enemy = enemyList[i];
enemy.y += 4;
//敌机是否超出边界
if(enemy.y > 600) {
//销毁敌机
app.stage.removeChild(enemy);
enemyList.splice(i,1);
}
}
}


//添加子弹
var b = 0;
function addBullet() {
if(b == 5) {
//创建子弹
var bullet = PIXI.Sprite.fromImage(&quot;res/plane/bullet_01.png&quot;);
bullet.anchor.set(0.5,0.5);
bullet.y = plane.y;
bullet.x = plane.x;
app.stage.addChild(bullet);

//将子弹图片添加到子弹数组中
bulletList.push(bullet);

b = 0;
} 
b++;
}


//移动子弹
function moveBullet() {
for(var i=bulletList.length-1;i>=0;i--) {
var bullet = bulletList[i];
bullet.y -= 20;
//子弹是否超出边界
if(bullet.y < -100) {
//销毁子弹
app.stage.removeChild(bullet);
bulletList.splice(i,1);
}
}
}


//敌机与子弹的碰辜
function crash(){
//循环子弹数组
for(var i=0;i<bulletList.length;i++) {
var bullet = bulletList[i];

//循环敌机数组
for(var j=0;j<enemyList.length;j++) {
var enemy = enemyList[j];

var pos = (bullet.x - enemy.x) * (bullet.x - enemy.x) + (bullet.y - enemy.y) * (bullet.y - enemy.y);
//判断是否发生碰撞
if(pos < 60 * 60) {
//销毁子弹
app.stage.removeChild(bullet);
bulletList.splice(i, 1);
//销毁敌机
app.stage.removeChild(enemy);
enemyList.splice(j, 1);

break;
}
}
}
}</script></html>" style="border:0;"></iframe>
<section></section>
</section>
分享到:
打赏

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏