265手游,让游戏更精彩!

全套源码丨类 Roguelike+虚拟摇杆,全新 3D 射击游戏上线

Cocos 官方 Demo Team 全新出品 3D 射击游戏《幽灵射手》正式上线!项目完整开源,含工程源码、美术资源、策划文档(核心逻辑、技能设定、UI 说明),支持 Cocos Creator 3.3

《幽灵射手》是一款带有类 Roguelike 元素的 3D 射击游戏。游戏不仅拥有丰富的技能系统,更设计了许多随机、多变的怪物元素与场景机关。玩家通过虚拟摇杄控制角色移动,发射弓箭击退邪恶生物,冲破重重关卡,成为出色的“幽灵射手”。

https://www.zhihu.com/video/1419293677277192192

本次我们邀请了 Cocos 社区大神、「博毅创为」明星讲师 Blake 同步输出《幽灵射手》项目开发的视频讲解教程,先来看看这份源码中有哪些能帮助到开发者们的亮点与技术实现细节吧。


类 Roguelike 元素

《幽灵射手》带有明显的 Roguelike 游戏的特点:死亡永久性、游戏内容随机性、以及技能组合多样性。

游戏属于无限挑战模式,玩家在游戏失败/死亡后都需要重新来过;关卡是随机生成的,能够避免内容的高度重复,让玩家每次都能拥有新鲜的游戏体验;最重要的是,游戏里多样的技能、装备带来了丰富的策略玩法,每次 build 都需要针对情况灵活搭配。

纯数据配置驱动关卡

《幽灵射手》中有近百个关卡层,如何将大量的关卡地图做得既不单调、又节省资源呢?《幽灵射手》采用了“大环境地图+不同障碍物”的解决方案。

整个项目只设计了两个大地图场景。而在实际的关卡层中,我们只需选用一个场景,然后在场景上的不同位置配置不同种类的障碍物,关卡之间就不再是千篇一律。通过表格文件配置、或随机生成好每个关卡的障碍物后,游戏就能在丰富关卡内容的同时,做到资源开销稳定,拼出无限大地图。

除此之外,游戏中的玩家和怪物都有一个数据配置表,描述了他们的基本数值、资源路径、大小和行为。每个技能也有一个数据配置表,描述了它的数值与对应的资源路径。编辑关卡的时候,可以自由地给怪物编写技能、编辑怪物的思考行为模式等。这样的数据驱动设计也是关卡游戏中的经典设计模式。

丰富的特效

在过去,很多开发者都苦于 Cocos 特效方面的资源和教程比较少。而在这套游戏源码中,我们看到了丰富的特效,移动、放技能、升级、传送带等等,几乎每个动作都伴随有相应的特效。而这些动作特效可以为我们今后制作精品游戏做一个很好的示范和技术储备:

虚拟摇杆控制角色移动

《幽灵射手》是 Demo Team 第一次在游戏中引入摇杆来控制角色。先来看看摇杆部分的技术实现细节:

首先在 joystick.ts 中实现对摇杆的控制,先配置触摸类型 TOUCH_TYPE 和方向DIRECTION_TYPE,然后注册 touch 监听函数。

在 touchStartEvent 里面设置摇杆初始位置和摇杆的可移动范围。

在 touchStartMove 里设置摇杆中心按钮方向和位置,如果是第一次拖动摇杆时有角度,则判定游戏开始,根据触摸移动返回的x、y,实时更新按钮角度 this._angle。

在 touchStartEnd 里面监听,当手离开时,摇杆和中心按钮恢复到默认位置。

实现了摇杆部分的逻辑,我们再来通过它来移动角色:

在 joystick.ts 的 update 里面,每隔 0.04 秒判断当前摇杆按钮是否移动,如果移动则调用玩家脚本 player.ts 的 playAction 函数,传入 MOVE 事件和角度;反之调用STOP_MOVE。

如果玩家移动,则在 player.ts 的 update 里面设置玩家目标旋转角度,并设置实时角度,达到目标角度后停止旋转。

如果玩家不移动,先判断如果地图上有怪物则向怪物攻击,反之原地待机。

最后就是我们看到的移动效果了:

https://www.zhihu.com/video/1419294570903932928

规范的商用 3D 项目组织方式

项目下载解压后,可以看到官方将一个完整游戏项目的策划案、美术资源、程序代码都包含在其中,希望能给大家展现一个游戏项目完整的开发流程。无论是游戏策划案、还是项目工程,都非常清晰与规范。

打开工程源码后可以看到项目工程的目录结构,包括一级目录、二级目录的设计,特效、地图、配置数据、UI 视图、3D 模型和代码等分类摆放整齐,代码质量很高、资源命名规范,阅读代码时非常轻松就能找到对应的资源。


资源链接

《幽灵射手》新品上架 Cocos Store,1折秒杀优惠,仅需¥9.9点击【阅读原文】跳转至 Cocos Store 资源地址:

配套视频教程(全九集)已上传至 Cocos 官方 B 站,感谢 Blake 的激情爆肝!