初学者用COCOSCREATOR写一款飞机大战游戏(7)

戒戒说游戏 2023-05-19 09:43:23

在上一篇文章中我们讲了敌人基类的写法,今天我们来讲一下玩家子弹的管理类。

首先在onload函数内获取武器的数据

this.mainWeapon = JSON.parse(sys.localStorage.getItem("mainWeapon")); // 获取主武器数据

检测到有碰撞后就减少敌人的血量,这里由于敌人中的普通敌人和BOSS用了不同类型的基类,所以我们可以根据碰撞的tag来判断:我这里把所有BOSS的tag设置成了99。

然后我们就可以在onBeginContact中来判断:

if (otherCollider.tag == 99) {

if (selfCollider.name.indexOf('bullet') != -1) {

otherCollider.node.getComponent(bossBase).varHealth -= this.mainWeapon.mainWeapon.attackNumber;

在update函数里我们需要写子弹的位置更新代码,这里戒戒分享两个简单的函数,一个是在Y轴向上飞的普通子弹:

还有一个就是稍微复杂一些的跟踪导弹:

这里我们先查找子节点中名称叫Enemy的子节点,然后获取这个子节点的位置,再获取到子弹指向敌机的单位向量。然后让子弹位置和夹角也随着向量的改变而改变。

this.curPos.x += normalizeVec.x * this.persistNode.getComponent(PersistNode).missileBulletMoveSpeed * deltaTime;  //子弹沿着单位向量移动

this.curPos.y += normalizeVec.y * this.persistNode.getComponent(PersistNode).missileBulletMoveSpeed * deltaTime;

this.node.setPosition(this.curPos);

还要判断没有敌机存在的情况,这似乎后就跟普通子弹一样向上移动。这里有一点我们取的敌机永远是最后增加到游戏的那个,这里也可以根据要求去实现一些自己的逻辑。比如把敌人节点分类,有BOSS优先攻击等等。

this.curPos.y += this.persistNode.getComponent(PersistNode).missileBulletMoveSpeed * deltaTime;

好了今天就先说这么多,对了记得来体验一下这款小游戏哦,打不过的话一定要升级装备!期待你来拿个排行榜!

0 阅读:16

戒戒说游戏

简介:各类游戏相关内容发布