前言
之前写的JAVA游戏开发-超炫酷贪吃蛇游戏源码及教程受到不少用户的关注,目前已超过3W的用户阅读量,这是对我原创内容的支持,在这是表示感谢!同时有不少小伙伴私信我,问我能不能写一个微信/抖音版的贪吃蛇游戏。今年我终于下定决心使用Cocos重构了贪吃蛇游戏并命名为《蛇王传说》上架了微信/抖音小游戏平台,可以搜索蛇王传说体验。
核心玩法
游戏玩法参照了流行的贪吃蛇玩法,主要是玩家通过方向遥感按钮控制自己的角色在地图上游走,通过按下加速按键加速游走。角色在地图上寻找食物吃掉,获取的食物越多生长的会越来越长,越来越粗。同时地图上会随机生产NPC角色,NPC具备AI能力,可以寻找食物、可以和玩家产生碰撞。玩家和NPC和其他角色或墙壁碰撞后会死亡,游戏结束。
代码代码
分类管理食物,角色npc,主程逻辑清晰
start() {
this.fondManger.init(1000);
this.initPlayer();
this.npcManger.init(10);
}
update(dt: number) {
this.LTips.string = `长度:${this.snake.getSnakeLen()} 金币:${this.snake.getmoneySum()}`
this.snake.setAngle((360 - this.angleBtn.angle) % 360);
this.fashBtn.isFash ? this.snake.running(dt) : this.snake.move(dt);
//this.snake.autoMove(dt);
for (let i: number = 0; i < this.animal.length; i++) {
this.animal[i].autoMove(dt);
}
}
角色设计
一个完整的角色皮肤有三部分组成(头部、身体、尾巴),每个角色有单独的配置文件,在游戏过程中可使用代码动态增加身体的长度和缩放比例控制角色生长的越来越长,越来越粗。
@ccclass('Snake')
export class Snake extends Component {
public init(){}
onEnable() {}
onDisable(): void {}
private setEnergy(energy: number): void {}
private grow(): void {}
public setAngle(anale: number) {}
/**
* 跑步
* @param dt
*/
public running(dt: number) {}
/**
* 移动
* @param dt
*/
public move(dt: number) { }
public autoMove(dt: number) {}
public getSnakeLen(): number {}
public getmoneySum(): number {}
public death() {}
}
NPC角色AI能力
NPC在地图上可以游走,可以寻找食物,躲避障碍如何实现?
NPC角色的头部增加两个碰撞体模拟眼睛。碰撞体越大角色的视力范围就越大。当碰撞体碰撞到的是食物时旋转角色头部到食物的方向并加速前进,模拟出贪吃蛇的效果;当碰撞体碰撞到的是障碍物时旋转角色头部到没有障碍物的位置。但在实际游戏过程中发现NPC太聪明了,游戏体验较差,最后只有把角色的视力范围调整的比较小。
NPC角色的头部增加一个小的碰撞体。这个碰撞体主要为了检测碰撞障碍物角色死亡。
蛇王传说已上线微信抖音平台,欢迎大家体验!
NPC角色生长
通过可使用代码动态增加身体的长度和缩放比例控制角色生长的越来越长,越来越粗。