CocosCreator学习笔记-官方教学-05-scripting-02-prefab(预制体)
【案例1:场景 InstantiatePrefab】在屏幕上不断增加怪物,效果图如下
步骤1:先制作一个怪物的预制体MonsterPrefab,并将 脚本 MonsterPrefab 挂到上面
monsterPrefab脚本随机选择一个怪物的贴图给prefab上
// 脚本 MonsterPrefab
var Helpers = require('Helpers');//引用脚本 Helpers
cc.Class({
extends: cc.Component,
properties: {
spriteList: {
default: [],
type: [cc.SpriteFrame]
}
},
// use this for initialization
onLoad: function () {
var randomIdx = Helpers.getRandomInt(0, this.spriteList.length);
var sprite = this.getComponent(cc.Sprite);
sprite.spriteFrame = this.spriteList[randomIdx];
}
});
// help 脚本
if (CC_JSB && cc.runtime) {
// fix cocos-creator/fireball#3578
cc.LoaderLayer.setUseDefaultSource(false);
cc.Dialog.setUseDefaultSource(false);
}
// Returns a random integer between min (included) and max (excluded)
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
module.exports = {
getRandomInt: getRandomInt
};
知识点:
随机函数:Math.random() * num 随机数函数 返回 0<=x < 1
例子:Math.random() *100 返回 0<=x<100
模块化脚本:module.exports= {};
https://docs.cocos.com/creator/manual/zh/scripting/modular-script.html?h=module.exports
步骤2 :随机生成怪物,数量可控
cc.Class({
extends: cc.Component,
properties: {
root: {
default: null,
type: cc.Node
},
prefab: {
default: null,
type: cc.Prefab
},
canvas: {
default: null,
type: cc.Canvas
},
numberToSpawn: 0,
spawnInterval: 0
},
addSpawn: function () {
if (this.spawnCount >= this.numberToSpawn) {
this.clearRepeater();
return;
}
var monster = cc.instantiate(this.prefab);
monster.parent = this.root;
//this.canvas.node.addChild(monster);
monster.position = this.getRandomPosition();
this.spawnCount++;
},
// use this for initialization
onLoad: function () {
var self = this;
self.randomRange = cc.p(300, 200);
self.spawnCount = 0;
self.schedule(self.addSpawn, self.spawnInterval);
},
getRandomPosition: function() {
return cc.p(cc.randomMinus1To1() * this.randomRange.x, cc.randomMinus1To1() * this.randomRange.y);
},
clearRepeater: function() {
this.unschedule(this.addSpawn);
},
});