COCOS:(飞机大战06)制作敌机的Prefabs,被攻击后的敌机爆炸动画

飞机大战知识点总结

1.在Canvas下创建Enemy0文件,用来存放敌机,将小飞机enemy0图片文件拖进Enemy0文件
2.在Scripts文件内创建Enemy.ts用来控制飞机从上到下的飞行,并将Enemy.ts绑定到Enemy0文件
4.将飞机的Y轴拉到屏幕外
5.最后将Enemy0文件制作成Prefabs
在这里插入图片描述
Enemy.ts内容

import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('Enemy')
export class Enemy extends Component {
    /**
     * 控制敌机 从上到下的移动
     * speed:number         多少米每秒的向下移动
     */
    @property
    speed:number = 300;
    start() {

    }
    update(deltaTime: number) {
        const pos = this.node.position;
        this.node.setPosition(pos.x,pos.y-this.speed*deltaTime,pos.z)
    }
}

敌机的爆炸动画制作

敌机的爆炸动画,需要用到的图片UI
在这里插入图片描述
制作动画的方式,可以参考飞机大战02帧动画的制作
制作完成后需要在Enemy.ts中定义Animation动画

@property(Animation)
anim:Animation = null;
start() {
	// 然后就可以通过play() 方法播放动画了
	// this.anim.play()
}

Body添加到Anim
在这里插入图片描述
同理用以上步骤,可以创建第二个,第三个敌机。并重新制作动画帧。

在使用cocos2d-x开发飞机大战游戏时,敌机发射子弹的逻辑可以分解为以下几个步骤: 1. 创建子弹类:首先需要创建一个子弹的类,继承自cocos2d-x中的`Sprite`类,用于管理子弹的属性和行为。 ```cpp class Bullet : public cocos2d::Sprite { public: Bullet(); // 构造函数 virtual ~Bullet(); // 析构函数 // 初始化子弹位置等属性的方法 void init(float x, float y); // 子弹移动的逻辑 void update(float delta); }; ``` 2. 在敌机类中添加子弹发射功能:敌机类中应该有一个方法用于控制子弹的发射。这个方法可以被定时调用,比如每一秒钟发射一次。 ```cpp class Enemy : public cocos2d::Sprite { public: virtual void onEnter(); // 敌机进入屏幕时的逻辑 virtual void shoot(); // 发射子弹的方法 // ... 其他敌机相关的方法和属性 }; ``` 3. 实现子弹的发射和移动:在子弹类中实现`update`方法来控制子弹的移动,比如让它向左上方移动一定的速度。 ```cpp void Bullet::update(float delta) { // 更新子弹的位置,使其向上和向左移动 this->setPosition(cocos2d::Vec2(getPositionX() - SPEED * delta, getPositionY() - SPEED * delta)); // 检查子弹是否出界,如果出界则移除子弹 if (getPositionX() < 0 || getPositionY() < 0) { removeFromParentAndCleanup(true); } } ``` 4. 控制敌机发射子弹:在敌机类中,实现`shoot`方法,让敌机定期生成子弹。 ```cpp void Enemy::shoot() { if (shouldShoot) { // 根据某种逻辑判断是否发射子弹 // 创建一个子弹实例 Bullet *bullet = Bullet::create(); // 初始化子弹位置在敌机的下方中心位置 bullet->init(getPositionX(), getPositionY() + this->getContentSize().height / 2); // 将子弹添加到游戏中,比如可以添加到Layer或者Director中 this->getParent()->addChild(bullet); // 让子弹开始移动 bullet->runAction(cocos2d::MoveBy::create(BULLET_DURATION, cocos2d::Vec2(0, -BULLET_SPEED))); } } ``` 5. 调度敌机发射子弹:在敌机的`onEnter`方法中设置定时器来定期调用`shoot`方法。 ```cpp void Enemy::onEnter() { // ... 省略其他初始化代码 // 设置定时器,每1秒发射一次子弹 this->schedule_selector(Enemy::shoot, 1.0f); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值