67 lines
2.4 KiB
TypeScript

// 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";
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;
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;
}, i * GameData.instance.enemyMoveTime * 0.25);
}
}
onLoad () {
var manager = cc.director.getCollisionManager();
manager.enabled = true;
}
start () {
this.schedule(this.spawnShips, 5, cc.macro.REPEAT_FOREVER, 1);
}
// update (dt) {}
}