保卫萝卜
typeScript版
pistach
游戏探索小能手
展开
-
Creator实战项目【保卫萝卜】-- 模块之间的交互
实现:在模块A 调用 模块B 的函数模块A发送消息,模块B响应消息。如:在卡片层要调用武器层的addWeapon函数,传入第一次点击的坐标在脚本基类ScriptBase.ts中,编写sendMsg函数(遍历所有模块,查找模块中是否有传递进来的funcName这个属性的函数),消息名其实就是另一个模块中的函数名。//消息名 模块名 参数sendMsg(funcName:string,moduleName:string,...rest:any){ //遍历所有模块,去查找模块中是否有传递进来的原创 2021-07-19 15:16:25 · 368 阅读 · 1 评论 -
Creator实战项目【保卫萝卜】-- 多样化的处理(不同地图、不同卡片)
修改关卡(不同关卡不同地图)import ScriptBase from '../Game/ScriptBase'import ResMgr from '../Res/ResMgr' //用于加载资源const {ccclass, property} = cc._decorator;@ccclassexport default class TiledMapCtrl extends ScriptBase { onInit(){ //获取格子地图组件原创 2021-07-16 21:02:25 · 319 阅读 · 2 评论 -
Creator实战项目【保卫萝卜】-- 资源的使用(修改预制体)
通过资源方式加载预制体、精灵、json数据。import ResMgr from './ResMgr'import MgrBase from './ResBase'const {ccclass, property} = cc._decorator;@ccclassexport default class NewClass extends cc.Component { start () { //进度回调函数 let onProgress =(finish:原创 2021-07-16 19:00:50 · 404 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 资源加载(进度条)与资源管理
新建一个recourse文件夹,把需要加载的资源放入。创建Loading脚本,使用 cc.resources.loadDir( ) 加载资源cc.resources 是一个 bundle,用于管理所有在 assets/resources 下的资源const {ccclass, property} = cc._decorator;@ccclassexport default class NewClass extends cc.Component { start () { //进度回原创 2021-07-16 17:02:47 · 973 阅读 · 2 评论 -
Creator实战项目【保卫萝卜】-- 怪物扣血、移除怪物(移除怪物以后,要考虑攻击目标不存在:存在才处理移动、扣血、销毁等操作)
在怪物脚本中定义怪物血量、公布血条,写一个伤害接口(传入伤害)//怪物血量private totalHp:number = 1000;private hp:number = 1000;Damage(damage:number){ this.hp -= damage; //血量为0 if(this.hp<=0){ //销毁怪物,移除怪物脚本 this.remove(); } } 子弹碰撞时处理扣血;当敌人打原创 2021-07-15 16:35:51 · 346 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 子弹与怪物的碰撞
编辑碰撞分组分别为子弹和敌人添加碰撞组件并选择分组写一个全局脚本GameInit在引擎初始化时就开启碰撞(会自动调用)//cc.game 包含游戏主体信息并负责驱动游戏的游戏对象cc.game.on(cc.game.EVENT_ENGINE_INITED,()=>{ //开启碰撞 cc.director.getCollisionManager().enabled = true;})在子弹脚本中编写代码处理碰撞效果 //子弹碰撞onCollisionEnter(o原创 2021-07-15 15:55:08 · 300 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 子弹对着敌人发射
在武器脚本中定义攻击目标import ConfigMgr from './ConfigMgr'import BulletLayer from './BulletLayer';import MonsterLayer from './MonsterLayer'import Monster from './Monster'const {ccclass, property} = cc._decorator;@ccclassexport default class Weapon extends cc.原创 2021-07-15 15:31:13 · 386 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 武器旋转
在武器的onUpdate中编写旋转逻辑,让武器实时旋转。onUpdate(dt){ let monsterTs = this.monsterLayerTs.getMonsterByPosAndDistance(this.node.position,this.fireRangle); //判断如果脚本不为空,攻击范围有敌人。 if(monsterTs){ //处理武器旋转 //获取武器指向怪物的向量 let deltaPos =原创 2021-07-13 21:08:08 · 175 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 子弹产生、武器开火、敌人移除
子弹原创 2021-07-13 14:59:14 · 246 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 怪物的移动
在Monster.ts中写一个接口,拿到怪物的当前坐标和下一个拐点坐标,通过动作tween让怪物移动。通过递归调用自己来实现不断地向下一个拐点移动。//怪物自己移动到最后。runWithPath(){ //获取怪物当前坐标 let curPos =cc.v2(this.node.x,this.node.y); //索引加1 this.index++; //获取下一个拐点坐标 let endPos = this.arrPos[this.in原创 2021-07-12 20:35:39 · 570 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 怪物的生成、根据格子地图中的拐点来设置怪物的初始位置
在编辑器中新建怪物,把怪物做成预制体。在怪物层中创建怪物import ScriptBase from './ScriptBase'import Monster from './Monster'const {ccclass, property} = cc._decorator;@ccclassexport default class MonsterLayer extends ScriptBase { @property(cc.Prefab) monsterPrefab:cc原创 2021-07-12 20:18:42 · 470 阅读 · 1 评论 -
Creator实战项目【保卫萝卜】-- 武器层
创建武器层和武器层脚本;创建武器节点(节点下拖入武器托盘Tray和武器炮筒Barrel),先挂脚本,在做成预制体。在武器层中,编写addWeapon接口创建武器。import ScriptBase from './ScriptBase'import ConfigMgr from './ConfigMgr' //用于获取脚本数据import TiledMapCtrl from './TiledMapCtrl' //用于强转const {ccclass, property} = cc._原创 2021-07-12 14:24:28 · 322 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 卡片层、卡片
把卡片精灵做成预制体,锚点为0,0创建一个卡片层,继承于脚本基类,在卡片层脚本中拿到预制体创建卡片(卡片要通过代码创建,不要直接在层级管理器中挂,否则会在Game.ts的onLoad加载所有节点是我就加载出来,后续处理比较麻烦)import ScriptBase from './ScriptBase'const {ccclass, property} = cc._decorator;@ccclassexport default class CardLayer extends ScriptBas原创 2021-07-10 10:46:37 · 261 阅读 · 1 评论 -
Creator实战项目【保卫萝卜】-- 触摸层
实现:点击地图来判断是否创建武器import ScriptBase from './ScriptBase'import ConfigMgr from './ConfigMgr' //用于获取脚本数据import TiledMapCtrl from './TiledMapCtrl' //用于强转const {ccclass, property} = cc._decorator;@ccclassexport default class TouchLayer extends Script原创 2021-07-10 09:45:42 · 189 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 格子地图
import ScriptBase from './ScriptBase'const {ccclass, property} = cc._decorator;@ccclassexport default class TiledMapCtrl extends ScriptBase { //初始化格子地图组件变量 private tiledMap:cc.TiledMap = null; //定义格子地图相关变量 private tiledSize:cc.Size =原创 2021-07-09 17:28:59 · 311 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 修改地图
创建游戏主场景,拖一张格子地图放入层级管理器,把Tmx Asset中的属性删掉。编写地图控制脚本,在TiledMapCtrl.ts中,公布一个地图资源数组,把多个格子地图拖进去。@property([cc.TiledMapAsset])arrTiledMapAssets:cc.TiledMapAsset[] = [];在TiledMapCtrl.ts中修改格子地图//初始化格子地图组件变量private tiledMap:cc.TiledMap = null; start(){原创 2021-07-09 15:55:12 · 426 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- pageView区别点击与滑动
给一个bool值变量判断是否点击,初始化为true(因为进入关卡选择就可以点击进入游戏);滑动时:如果监听到有发生滑动,把bool值设为false(非点击);滑动结束后:把bool值设为true(可以点击);触摸放开时:如果bool值为true(没有滑动,那么触摸事件就是点击),切换场景。private isClick:boolean = true;this.levelPageView.node.on('scrolling',()=>{ //发生滑动 //非点击原创 2021-07-09 12:52:24 · 231 阅读 · 0 评论 -
Creator实战项目【保卫萝卜】-- 关卡选择、pageView效果
在关卡选择节点上下创建背景图、pageView组件。编写LevelSelect脚本,挂载到关卡选择节点上。在LevelSelect.ts脚本中,公布pageView组件和组件切换精灵帧合图。实现修改组件中的精灵帧图片(先修改单个)const {ccclass, property} = cc._decorator;@ccclassexport default class LevelSelect extends cc.Component { @property(cc.PageView)原创 2021-07-09 11:35:51 · 480 阅读 · 1 评论