Cocos Creator2D游戏开发(6)-飞机大战(4)-敌机产生

敌机产生&玩家发射子弹

敌机产生:
创建一个空节点
创建一个敌机预制体
把敌机图片拖入预制体内
使用代码生成敌机
让敌机动起来

  1. 创建一个预制体enemy_prefab
  2. 双击预制体enemy_prefab,然后拖入一个敌机图片,设置好方向和尺寸,一定要记得保存然后关闭(场景编辑器里面的保存)
    在这里插入图片描述
  3. 创建一个空节点enemy_node
  4. 创建一个脚本root.ts和root_node绑定
  5. root.ts添加 两行代码,保存
`   @property(Node) enemy_node: Node;   
    @property(Prefab) enemy_prefab: Prefab;  `

在这里插入图片描述
6. 选中root_node节点 绑定节点和预制体, 保存
在这里插入图片描述
7. root.ts代码

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

@ccclass('root')
export class root extends Component {
    @property(Node) enemy_node: Node;   // 添加属性 以便在代码中引用 敌人节点
    @property(Prefab) enemy_prefab: Prefab;   // 添加属性 以便在代码中 动态生成 敌人


    start() {
        this.createEnemies(); //使用定时器生成敌机
    }

    update(deltaTime: number) {

    }


    createEnemies() {
        this.schedule(() => {
            this.createOneEnemy();
        }, 1);

    }

    // 创建一个敌机
    createOneEnemy() {
        // console.log("createOneGold !");
        const enemyPrefab = instantiate(this.enemy_prefab);   // 实例化一个对象 (动态生成)
        this.enemy_node.addChild(enemyPrefab);     // 将对象 添加到某个 节点内
        let x = (Math.random() * 360)   // random() 0-360 
        enemyPrefab.setPosition(180 - x, 350);  // 设置敌机的Y坐标
        console.log("enemyPrefab: " + (180 - x) + "   y" + 350);
    }

}

运行,飞机出来了,就是不会动
在这里插入图片描述
8. 让敌机飞
①创建Enemy.ts
②Enemy.ts和enemy_node节点绑定
③ 编写enemy.ts代码

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

@ccclass('Enemy')
export class Enemy extends Component {

    start() {

    }

    update(deltaTime: number) {
        const enemy_list = this.node.children;
        let need_destroy =[];
        for (let i = 0; i < enemy_list.length; i++) {
            const pos  = enemy_list[i].getPosition();
            if (pos.y < -400) {
                need_destroy.push(i);
            }else{
                enemy_list[i].setPosition(pos.x, pos.y - 10);
            }
        }
        for (let j = 0; j < need_destroy.length; j++) {
           const index =  need_destroy[j];
            enemy_list[index].destroy(); //销毁对象
        }
    }
}

然后运行 飞机就能飞了
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值