// Learn TypeScript: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/typescript.html // Learn Attribute: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html import GameData from "./GameData"; import SoundManager from "./SoundsManager"; const {ccclass, property} = cc._decorator; @ccclass export default class NewClass extends cc.Component { @property(cc.Prefab) alienship1: cc.Prefab = null; @property(cc.Prefab) alienship2: cc.Prefab = null; @property(cc.Prefab) alienship3: cc.Prefab = null; spawnShips() { var ships = [this.alienship1, this.alienship2, this.alienship3]; var randomShip = Math.floor(Math.random() * ships.length); var RTL = Math.random() < 0.5; var shipPrefab = ships[randomShip]; const batchMoveAmountX = Math.random() * 200 + 200; const shipY = this.node.getContentSize().height * 0.95; const screenHalfWidth = this.node.getContentSize().width / 2; const shipMaxMove = batchMoveAmountX; const margin = 0; const shipXMin = -screenHalfWidth + shipMaxMove + margin; const shipXMax = screenHalfWidth - shipMaxMove - margin; const shipX = Math.random() * (shipXMax - shipXMin) + shipXMin; const randomNumber = Math.ceil(Math.random() * 10); const specialItem = randomNumber%2 === 0 ? null : randomNumber%3 === 0 ? 'health' : 'rocket'; const specialItemIndex = Math.floor(Math.random() * GameData.instance.enemySpawnInterval); for (let i = 0; i < GameData.instance.enemySpawnInterval; i++) { this.scheduleOnce(() => { const ship = cc.instantiate(shipPrefab); ship.setPosition(shipX, shipY); this.node.addChild(ship); const shipScript = ship.getComponent('EnemyShip'); shipScript.moveAmountX = batchMoveAmountX; shipScript.RTL = RTL; if(i === specialItemIndex && specialItem !== null) { shipScript.specialItem = specialItem; } }, i * GameData.instance.enemyMoveTime * 0.25); } } onLoad () { var manager = cc.director.getCollisionManager(); manager.enabled = true; SoundManager.instance.playMusic('Dududum', true); } start () { this.schedule(this.spawnShips, GameData.instance.selectedLevel * 3, cc.macro.REPEAT_FOREVER, 1); } // update (dt) {} }