编者按

“游戏开发小赤佬,也玩 python 和 shell”

白玉无冰是“Cocos 荣耀讲师”征稿活动第1期的获奖作者之一,除了征稿作品《用摄像机实现残影幻影拖尾效果》之外,拥有多年 Cocos 游戏开发经验的他,还十分善于做技术总结,其个人公众号输出了大量的开发经验,感谢白玉无冰 。

以下为白玉无冰使用 Cocos Creator 3D 开发"蚂蚁庄园"项目的技术分享,包括上篇蚂蚁庄园登山赛和下篇蚂蚁庄园运动会星星球。

   上篇:蚂蚁庄园登山赛

游戏体验:

http://lamyoung.gitee.io/web/jumpGame

效果预览:

配置环境:

Cocos Creator 3D v1.0.0

寻找 3D 资源花费了我大半天的时间,开发 3D 游戏不易呀!最终我还是向KUOKUO 大佬那捞了一只鸡(鸭?)来用。由于是第一次写 3D 项目的技术分享,摄像机镜头调了多次才达到预想的效果。

天空盒素材来源于网络

实现原理:

生成道路是用预制资源,代码动态生成:

const element: Node = instantiate(this.prefab_land);
this.node_tree.addChild(element);

摄像机跟着小鸡一起往前移动(我写的是 z 轴移动):

update(deltaTime: number) {this.camera_game.node.setPosition(this.camera_game.node.position.x, this.camera_game.node.position.y, this.role.node.position.z)
}

监听 TOUCH_MOVE 事件控制小鸡左右移动,并要判断边界。注意手指移动的变化和实际屏幕看到的大小是不一样的,这是因为摄像机投影的原因。我是乘了一个系数,可能有其他方法判断?

private onTouMove(touch: Touch) {const delta = touch.getUIDelta();let targetX = this._curPos.x - delta.x * 1e-2;if (targetX > 4.5) targetX = 4.5;if (targetX < - 4.5) targetX = -4.5;this._curPos.x = targetX;
}

往前跳的运动就是修改y(跳跃) 和 z(往前)的数值啦。

jumpRun() {this._curPos.z += 0.1;if (Math.floor(this._curPos.z / 2) > this._curIndex) {this._curPos.y = 0;this._curIndex++;this.node.emit('JumpEnd', this._curIndex);}if (this._curPos.z % 2 < 1) {this._curPos.y += 0.2;} else {this._curPos.y -= 0.2;}
}

   下篇:蚂蚁庄园运动会星星球

游戏体验:

http://lamyoung.gitee.io/web/ballGame

效果预览:

配置环境:

Cocos Creator 3D v1.0.0

实现方案:

小球点击:3D 里节点无法用 cc.Node.EventType.TOUCH_START 监听,最终在论坛上找到一个 raycast 解决方法。

参考代码如下:

start() {systemEvent.on(SystemEventType.TOUCH_START, this.onClickBall, this);
}
private _ray = new geometry.ray();
private onClickBall(touch: Touch, event: EventTouch) {const pos = touch.getLocation();this.camera.screenPointToRay(pos.x, pos.y, this._ray);const result: { node: Node }[] = this.node_ball_click.scene.renderScene['raycast'](this._ray);if (result.some((i) => {if (i.node === this.node_ball_click) {return true;}})) {//点击到小球处理逻辑}
}

其中 result 返回的是一个包含 node 节点的结果数组,获取后需要判断一下是否为小球节点。这个方案消耗性能比较大,后续应该会有更好的解决方案,也期待大家可以一起交流。

动画系统:采用了编辑器的动画编辑器,对需要部分增加动画效果。由于我的资源是网上找的,那只鸡有些身体部分切割的不好,所以小鸡的动画比较差一些。

需要注意的是动画编辑器里的 rotation 属性,与节点里的属性面板的 rotation 对应不上,而应该采用 eulerAngles 的属性。

据说后续版本会处理?

小球轨迹:采用 tween 控制小球坐标数值,先移动到最高点,然后再移动到最低点。

在运动轨迹中加入一些随机值,就可以达到不同位置的效果啦。

tweenUtil(this._node_balll_pos).stop().to(time, new math.Vec3((this.node_ball.position.x + BALL_INIT_X) / 2, BALL_MAX_Y * (0.8 + 0.2 * Math.random()), targetZ / 2)).to(time, new math.Vec3(BALL_GAMEOVER_X, BALL_MIN_Y, targetZ)).start();

   总结

完成这个小功能主要遇到的问题是 3D 节点点击事件和动画系统的 rotation 的问题,不过这些都在论坛里找到了相应的解决方法。

开发 3D 项目还是非常需要掌握一些基础知识,例如正交投影,透视投影,点光源,平行光源等,我也是在 webgl 编程指南里学到的,建议看看!

以上就是我最新的学习成果!如有问题或新的想法欢迎留言!欢迎感兴趣的开发者关注我的个人公众号获取本项目源码,我也定期分享我的学习心得和开发经验。

再次感谢白玉无冰为社区所作的贡献!此外,Cocos Creator 3D v1.0.1 正在社区进行火热公测,欢迎各位开发者下载体验!

https://forum.cocos.org/t/cocos-creator-3d-v1-0-1/85773。

如果您在使用 Cocos Creator 2D/3D 的过程中,获得了独到的开发心得、见解或是方法,并且乐于分享出来,帮助更多开发者解决技术问题,加速游戏开发效率,期待您与我们联系!

Cocos Creator v2.2 正式发布

Cocos Creator 3D v1.0 正式发布

Cocos Creator 3D 物理模块介绍

Cocos Creator v2.2 自定义渲染组件及材质介绍

小姐姐,你的发丝高光怎么用 Creator 3D 实现?

极限开发《TheCode》和《Shoot the F》创作笔记

独立游戏 5000 万下载百万 DAU 竟不花一分钱?

Cocos 与腾讯云宣布战略合作,把游戏开发门槛降到极致

Cocos Creator 实现战旗类游戏《火焰纹章》移动范围效果

Cocos Creator 通用框架设计——网络

支付宝小游戏来啦!

我就知道你“在看”▼

文中使用素材均来自网络!版权归原作者所有,如有侵权还请联系!

Cocos Creator 3D 蚂蚁庄园系列技术分享相关推荐

  1. Cocos Creator 3D v1.0.2 正式发布,新增小游戏平台支持

    ​Hi,各位开发者,Cocos Creator 3D 为大家带来翘首以待的新平台和新功能支持,v1.0.2 已正式发布,欢迎大家移步官网下载使用! 升级之前请根据项目情况进行必要的技术评估和版本备份噢 ...

  2. 【更新至 11P】Cocos Creator 3D 官方中文视频教程

    为了帮助各位开发者更快上手 Cocos Creator 3D 的使用,开发出好玩优质的 3D 游戏作品, Cocos Creator 3D 引擎开发工程师放空结合 3D 休闲小游戏案例<快上车 ...

  3. 蚂蚁庄园运动会登山赛!3d项目入门实战!Cocos Creator 3D!

    好像没写过3d项目分享,那么就跟着蚂蚁庄园的小鸡一起跳跳跳吧! 效果预览 配置环境: cocos creator 3D 1.0.0 首先是寻找3d资源花费了大半天时间,开发3d游戏不易呀!最终还是向K ...

  4. 长远发展java还是cocos_聊聊 Cocos Creator 3D 的未来

    ​Hi,各位开发者,很高兴跟大家见面.在我们发布了 Cocos Creator 3D 之后,得到了许多积极的反馈和建议,在此真诚地感谢大家的支持! 从去年十月份 Cocos Creator 3D 诞生 ...

  5. 如何用 Cocos Creator 3D 如何实现小姐姐的发丝高光?

    Introduction PRB 材质改变了人们对于引擎实时渲染画面的理解,让玩家在游戏中,也能够体验到锈蚀的金属,厚重的皮革,精细的纹理,感受更加真实的世界.在正式发布的 Cocos Creator ...

  6. cocoscreator3d 模型透明_用 Cocos Creator 3D 实现小姐姐的发丝高光

    ​本文作者:武云潇 Cocos Creator 3D 引擎开发工程师 >>作者知乎:YunHsiao Wu >>作者其他文章:<It's not a bug, it's ...

  7. 用 shader effect 实现雨滴落水效果!Cocos Creator 3D !

    最近逛论坛时,看到一位大佬在分享各种 shader 特效.基于其中的水波 shader ,白玉无冰写了一个玩水效果!文章底部获取完整代码!还可以试试水哦! 先一起看看效果- 点击任意位置,会在该位置生 ...

  8. 麒麟子Cocos Creator 3D研究笔记十:【qfw】开源的Extension Pack for Cocos Creator 3D

    零.写在前面 愿你活得烈马青葱,不为他人的目光所累 ---嗯! 阿子也不知道这个句子的原始出处,但就想把它分享给大家.专心写好自己的BUG,让别人说去吧! 在进入今天的正文之前,阿子想给大家聊聊最近使 ...

  9. cocos creator 3D | 拇指投篮 | 3D项目入门实战

    你的命中率是多少呢?文章底部试玩! 效果预览 配置环境: Cocos Creator 3D v1.0.1 玩法说明: 触摸屏幕,向上滑动投篮!注意篮板是会移动的哦!看看你的命中率是多少! 实现原理 为 ...

最新文章

  1. 宇宙是一个无始无终的循环?
  2. 6、MySQL查看和修改事务隔离级别
  3. expr命令 linux,Shell expr命令进行整数计算的实现
  4. 谷歌身份认证 Python实现
  5. WebApp 开发中常用的代码片段
  6. 一道数学题引发的思考
  7. Android 友盟分享简单Demo
  8. 手把手教你如何生成自己的二维码
  9. 软件测试禅道是什么?如何使用?
  10. 计算机上如何查找什么占网速,怎么查看网速被占用(宽带100m但wifi很慢)
  11. 第二章第三题(将英尺转换为米)(convert feet to meters)
  12. 结算时打印购物小票,计算此次获得的会员积分
  13. X11VNC远程连接Ubuntu
  14. 【完整流程】在Windows系统中安装Python
  15. rk3288 linux 编译,注意了!VS-RK3288Ubuntu编译环境错误小结
  16. 【论文阅读】Conversations Are Not Flat: Modeling the Dynamic Information Flow across Dialogue Utterances
  17. 数据库系统教程——数据库概论(一)
  18. 江西外语外贸官网 仿写
  19. 区块链(Blockchain)简介
  20. 策略模式、模板模式实战

热门文章

  1. JavaScript字符串方法substr()截取前两个字符和后两个字符
  2. 对argument的基本理解
  3. ipadpro画流程图_‎App Store 上的“Sensus Process Modeller”
  4. python批处理_python写批处理
  5. 遇到了 Invalid signature file digest for Manifest main attributes错误怎么办
  6. aes加密算法c#语言实现,C#编程实现加密解密文件夹核心代码
  7. 程序员的职场晋升,别人为什么总比你走得快?
  8. 数学一年级应用题_一年级数学应用题100道
  9. mysql删除主键时报错_MySQL删除主键提示ERROR 1075 (42000)简单直观解决方案
  10. python字符串前面加个u代表什么