猫狗大战
- 游戏类型:塔防游戏
- 标签:卡通、休闲、2D、塔防、闯关
- 引擎:Cocos Creator
- 语言:JS
- 作者:未生畏死
- 注:美术资源来源于网络
游戏玩法:
一共有两种玩法。其一:在怪物到达堡垒前杀死它,否则堡垒会扣一点血。怪物消失。其二:怪物会沿着路循环移动,请在规定时间内杀死所有怪物。
场景描述
一共三个场景。
- Main:主场景,可开始、退出游戏。
- Opt:选择场景。可进行选关操作,返回Main场景。
- Pass1:游戏场景。加载对应关卡数据,生成对应物体,开始PLAY。
功能描述:
- 猫:堡垒。10hp。每有一只AI到达猫的位置时,hp-1。hp<=0时。游戏失败。循环关卡则hp恒定。技能:尖叫。消灭自身一定范围内的AI。
- 狗:出生点。所有AI的生成位置。
- AI:沿着路径移动,到达猫的位置时如果是普通关卡。猫hp-1,AI销毁。如果是循环关卡,则沿着路径继续移动。
- 炮台:炮台最高三级,每升一级会获得一定的属性提升。炮台会自动攻击在自己攻击范围内的敌人。可进行操作:创建、升级、售卖。
- 障碍物:占据地图位置的东西,拥有一定hp。只有将其清除后,才能使用其对应的格子进行炮台的创建等操作。消灭后,你会获得一定金币。
- 金币:你会获得一定的初始金币来进行炮台的创建、升级。消灭AI和障碍物是金币的来源。
- 标志物。你可以标记障碍物、使AI优先攻击他们。
- 等等…
具体功能实现:
地图生成。加载关卡数据,生成对应地图、猫、狗等。
this.PlayPass = cc.sys.localStorage.getItem("PlayPass")
this.PlayPass = 1
window.stageMission = window.mission[this.PlayPass]
// cc.log(this.PlayPass)
this.missionLoad()//任务信息加载
cc.loader.loadRes("tilemaps/stage-" + this.PlayPass, (err, tiled) => {
if (!err) {
cc.director.emit("levelUi", this.PlayPass)
this.titledMap.getComponent(cc.TiledMap).tmxAsset = tiled
// cc.log(tiled)
// cc.log(this.titledMap.getComponent(cc.TiledMap))
this.init()
}
})
- TiledMap数据解析
initData() {
this.mapSize = this.titledMap.getMapSize();
this.tileSize = this.titledMap.getTileSize();
this.road = this.titledMap.getLayer("road");
this.object = this.titledMap.getLayer("object");
this.tower = this.titledMap.getLayer("tower");
this.path = this.titledMap.getLayer("path");
this.obj = this.titledMap.getObjectGroup("obj");
this.tiledLayer = this.path
this.path.node.opacity = 0
this.life = this.obj.getObject("life");//线段路径层处理
this.chestpath = this.obj.getObject("chestpath");
this.pathline = this.obj.getObject("pathline");
this.end = this.obj.getObject("end");
this.ais