箭头游戏那么火,搞个3D的可以吗?我:这不是3年前的游戏了吗?
引言哈喽大家好我是亿元程序员。有小伙伴私信笔者大佬现在箭头游戏这么火我们搞个3D的可以吗3D箭头游戏这不是3年的游戏了吗带着逝去的记忆搜索了一下虽然3年前已经火过了但是也找到了一些最近才上而且做得比较好的我去体验了一下非常精美的游戏感觉现在箭头素材还是很有搞头的。言归正传本期带大家一起来实战看看在Cocos游戏开发中实现一个3D的箭头游戏有哪些知识点。本文实战完整源码可在文末获取小伙伴们自行前往有体验链接。关卡编辑器刚看到这游戏宣传图时这么多有趣的3D像素模型关卡那得多费美术妹子啊~3D像素模型能不能和2D那样通过读取图片的像素去生成关卡数据几经周折有倒是有但是前提还是得建模太麻烦了。不过在找的过程中发现了一个免费开源的体素建模工具MagicaVoxel:看了下这个工具能够快速编辑像素级别的模型还能导出文本数据简直就是为3D箭头游戏量身定做的啊。说那么多还不是要费美术妹子是的请她吃了好几碗大米饭才帮忙拼了好几关不过不用自己写编辑器那真是太巴适了建议大家多学。数形结合测试的话先简单将8个正方体拼成一个大的模型拼完之后我们就可以导出文本数据了简单看一下结构数据比较简单就是每个方块的x、y、z、r、g、b可以写个简单的方法进行逐行解析拿到每个方块的xyz和rgb最后写个测试方法生成用引擎自带的Cube进行测试数据有没有问题运行测试一下生成成功那箭头和颜色怎么弄颜色Shader起初美术妹子帮我预制了7种颜色的方块模型然后通过像素颜色rgb硬编码去映射对应的模型就得到了带箭头的方块美术妹子还挺好看的后来才发现从前并不是最好的选择每当要新增颜色时我们都需要重新画颜色贴图和硬编码不能够可持续发展。于是我想到了一个办法只保留一个白色的模型然后通过Shader去控制方块颜色Shader的实现也比较简单将贴图当做mask动态更换箭头和方块的颜色arrowColor是传入的箭头颜色(黑、白),baseColor是传入的方块颜色简单解析一下1.将贴图的rgb相加除以3得出亮度。2.亮度小于0.45变成0亮度大于0.55变成1即纯白和纯黑。3.最后通过mix混合得出颜色当mask为0用箭头色mask为1时用方块色。通过上面的Shader我们就可以给模型自定义上色了换了Shader之后会有个问题模型缺少了一些光的效果我们可以加上这样看起来就更真实一点看起来很厉害的样子能不能讲点我懂的游戏逻辑1.关卡生成其实3D箭头游戏的游戏逻辑和2D的箭头游戏完全不同反倒是像挪车游戏我们只需要避免箭头两两相对和形成闭环但是还不够安全研究了一下可以采用一种叫“剥洋葱”的算法这样就能得到绝对有解的关卡了有条件可以把逻辑放到关卡编辑器2.方块点击在3D游戏开发中通常通过点击屏幕 → 发射射线 → 检测碰撞 → 找最近物体 → 触发点击去点选物体**不懂**给小伙伴们画一个3.箭头移出箭头的移出就相对来说简单了只要没有阻挡就可以成功移出用补间动画就行效果如下细心的小伙伴发现了方块移出有个拖尾效果夹带私货更进一步作为合集2.0的首发咱们多唠嗑一点能看到这里的小伙伴已经打败了90%的小伙伴相信你也会点赞分享转发这个高大上的技能。1.拖尾效果我看原作方块飞出有个拖尾效果于是我翻看了下Cocos的官方文档惊喜地发现结果却一言难尽捣鼓了一段时间都没得到想要的效果。。。没办法只能撸一个拖尾的原理类似残影就是不断在方块的位置生成3D的颜色带然后逐渐变透明消失我们可以通过动态mesh实现效果如下2.合批3D游戏常用的合批手段通常可以这么处理按颜色缓存材质: 相同颜色的方块共享同一个Material开启 GPU Instancing: 相同材质相同网格的方块一次批量绘制效果如下::: column-left:::::: column-right:::结语那么问题来了3年前火过的游戏会不会再火一次本文实战完整源码已集成到亿元Cocos小游戏实战合集2.0内含体验链接已经拥有的小伙伴可以直接更新。我是亿元程序员一位有着8年游戏行业经验的主程。在游戏开发中希望能给到您帮助, 也希望通过您能帮助到大家。实不相瞒想要个赞和爱心请把该文章分享给你觉得有需要的其他小伙伴。谢谢推荐文章亿元Cocos小游戏实战合集1.0老板说最近这款游戏很火让我抄可是我连玩都玩不明白…这款值68亿的游戏你不实战一下吗安排小伙伴说我的拼图游戏用Mask不能合批…俄罗斯方块谁不会做…啊流沙版最近很火的一个拼图游戏老板让我用Cocos3.8做一个…老板说拼图游戏太卷了让我用Cocos做个3d版本的…敢不敢挑战用Cocos3.8复刻曾经很火的割绳子游戏