上一节06已经制作了3种飞机的预制体,这篇记录下随机生成敌机
1.在Canvas
下创建EnemyBox
文件,用来存放随机生成的敌机
2.创建EnemyBox.tx
,并绑定到EnemyBox文件
思路:
定义随机生成的时间
获取当前3种飞机的预制体
把获取到的预制体添加到当前场景种
需要获取x轴的随机位置,但是不能超过边界。
通过移动大飞机,得到x轴
为-150
和150
,y轴560
也就是说随机生成的x轴要在-150和150之间,y轴可以写死560
同理可以得到小飞机和中型飞机的位置生成区间
EnemyBox.tx
import { _decorator, Component, instantiate, math, Node, Prefab } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('EnemyBox')
export class EnemyBox extends Component {
/**
* enemy0Time 小飞机的生成时间
* enemy0Prefab 小飞机的预制体
*
* enemy1Time 中飞机的生成时间
* enemy1Prefab 中飞机的预制体
*
* enemy2Time 中飞机的生成时间
* enemy2Prefab 中飞机的预制体
*
* schedule() 定时器(绑定的方法,时间)
* unschedule() 清除定时器(需要清除的方法)
* math.randomRangeInt(MinX,MaxX) 生成随机数
*/
@property
enemy0Time:number = 1;
@property(Prefab)
enemy0Prefab:Prefab = null;
@property
enemy1Time:number = 4;
@property(Prefab)
enemy1Prefab:Prefab = null;
@property
enemy2Time:number = 8;
@property(Prefab)
enemy2Prefab:Prefab = null;
start() {
this.schedule(this.enemy0Spawn,this.enemy0Time)
this.schedule(this.enemy1Spawn,this.enemy1Time)
this.schedule(this.enemy2Spawn,this.enemy2Time)
}
protected onDestroy(): void {
this.unschedule(this.enemy0Spawn)
this.unschedule(this.enemy1Spawn)
this.unschedule(this.enemy2Spawn)
}
update(deltaTime: number) {
}
// 小飞机生成方法
enemy0Spawn(){
this.enemySpawn(this.enemy0Prefab,-215,215,450)
}
// 中飞机生成方法
enemy1Spawn(){
this.enemySpawn(this.enemy1Prefab,-200,200,490)
}
// 大飞机生成方法
enemy2Spawn(){
this.enemySpawn(this.enemy2Prefab,-150,150,560)
}
enemySpawn(enemyPrefab:Prefab,MinX:number,MaxX:number,Y:number){
// 1.拿到预制体
const enemy = instantiate(enemyPrefab)
// 2.添加到当前场景中
this.node.addChild(enemy)
// 3.获取随机数:随机生成小飞机的位置(边界值-150/150之间),Y轴560 坐标不变
const randomX = math.randomRangeInt(MinX,MaxX)
enemy.setPosition(randomX,Y,0)
}
}
放入预制体,运行看下效果