开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情
上一次我们说了玩家飞机和敌机血条功能,今天我们说下物资这个功能。
1. 制作物资预制体 。
(1)新建一个Sprite(精灵),并且命名为goods
(2) 关联图片资源,并调整下大小
(3)在script文件夹下新建一个脚本,并且命名为goods
(4)将脚本goods挂载到节点goods上
(5)将节点拖动到prefab文件夹里
(6)删除原来的节点goods,这样物资的预制体就制作完了
2. 添加碰撞分组
(1) 打开项目设置的物理
(2)添加Goods分组
(3)钩选Goods只能与玩家飞机碰撞
3. 打开Goods预制体
(1)添加物理组件
(2)选择分组为Goods
(3)记得保存
4. 打开persistNode脚本
(1)添加装饰器
@property(Prefab)
goodsPrefab:Prefab=null;
(2)打开常驻节点,关联物资预制体
(3)定义物资图片装饰器
@property(SpriteFrame)
bloodGoods:SpriteFrame=null; //加血物资图片
@property(SpriteFrame)
lightGoods:SpriteFrame=null; //激光导弹物资图片
@property(SpriteFrame)
missileGoods:SpriteFrame=null; //导弹物资图片
(4)打开常驻节点PersistNode,关联图片
5. 创建物资工厂,其实与其他工厂差不多的, 可以参考下敌机工厂
(1)在script文件夹下新建一个脚本,并且命名为goodsFactory
(2)删掉@ccclass('goodsFactory'),并且继承改为gameFactory
import { _decorator, Component, Node} from 'cc';
import { gameFactory } from './gameFactory';
const { ccclass, property } = _decorator;
export class goodsFactory extends gameFactory {
}
(3)打开global.ts脚本,添加以下常量
public static BLOODGOODS:string='bloodGoods'
public static LIGHTGOODS:string='lightGoods'
public static MISSILEGOODS:string='missileGoods'
(4)添加createProduct函数
import { _decorator, Component, Node, instantiate } from 'cc';
import { gameFactory } from './gameFactory';
import { global } from './global';
import { goods } from './goods';
import { persistNode } from './persistNode';
const { ccclass, property } = _decorator;
export class goodsFactory extends gameFactory {
public createProduct(productType:string): Node{
let goodsTeamp:Node=null;
if(this.productPool.size()>0){
goodsTeamp=this.productPool.get()
}else{
goodsTeamp=instantiate(this.persistNode.getComponent(persistNode).goodsPrefab)
}
switch(productType){
case global.BLOODGOODS:
goodsTeamp.getComponent(goods).init(productType,this.persistNode.getComponent(persistNode).bloodGoods)
break;
case global.LIGHTGOODS:
goodsTeamp.getComponent(goods).init(productType,this.persistNode.getComponent(persistNode).lightGoods)
break;
case global.MISSILEGOODS:
goodsTeamp.getComponent(goods).init(productType,this.persistNode.getComponent(persistNode).missileGoods)
break;
}
return goodsTeamp
}
}
6.打开脚本goods.ts,添加物资初始化函数
import { _decorator, Component, Node, SpriteFrame, Sprite } from 'cc';
const { ccclass, property } = _decorator;
@ccclass('goods')
export class goods extends Component {
goodsType:string=null
//物资初始化函数
init(goodsType:string,spriteFrame:SpriteFrame){
this.goodsType=goodsType;
this.node.getComponent(Sprite).spriteFrame=spriteFrame
}
}
今天就到这里了,主要说物资工厂的制作,下次再继续完善物资工厂。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家