CocosCreator之KUOKUO带你做个加速带!起飞!
摘要
有趣的物理小游戏总能让小伙伴们爱不释手,而 CocosCreator 的内置物理引擎让其开发变得更加简单。今天 KUOKUO 就为大家带来物理的加速带,让主角小恐龙起飞!
正文
使用版本
- CocosCreator 版本 2.1.3
最终效果
物理系统
在 CocosCreator 中有两套碰撞系统,不是 Physic 开头的就不是物理碰撞,通常用来做简单的碰撞检测。若我们想构建物理世界,那就要用刚体和物理碰撞组件了。最常用的:RigidBody + PhysicsBoxCollider。
还需在 onLoad() 方法中开启物理引擎:
cc.director.getPhysicsManager().enabled = true;
物理碰撞
在勾选开启物理监听后,物理碰撞发生后会触发该刚体节点上绑定脚本中的碰撞回调。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBE0NW0j-1581684893655)(http://cdn.kuokuo666.com/20200214/tt1.png)]
我们在碰撞物体上绑定脚本写下这几个回调方法,在发生碰撞后会依次的触发。
cc.Class({extends: cc.Component,properties: {},// 只在两个碰撞体开始接触时被调用一次onBeginContact: function (contact, selfCollider, otherCollider) {},// 只在两个碰撞体结束接触时被调用一次onEndContact: function (contact, selfCollider, otherCollider) {},// 每次将要处理碰撞体接触逻辑时被调用onPreSolve: function (contact, selfCollider, otherCollider) {},// 每次处理完碰撞体接触逻辑时被调用onPostSolve: function (contact, selfCollider, otherCollider) {}});
加速的实现
首先,我们要明白那 3 个参数的意义,尤其是 contact 最为重要。selfCollider 和 otherCollider 很容易理解,selfCollider 指的是自身节点上的碰撞体,ohterCollider 指的是发生碰撞的另一个碰撞体。那么这个 contact 是什么呢?它包含碰撞的信息,比如碰撞的位置和法向量,类型是 cc.PhysicsContact。我们怎么使用它呢?如图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DbSgy6N9-1581684893656)(http://cdn.kuokuo666.com/20200214/tt3.png)]
加速的实现就是调用了设置切线速度的API。注意要在 onPreSolve 中,在处理信息之前。
onPreSolve: function (contact, selfCollider, otherCollider) {contact.setTangentSpeed(1500);
},
不同地形实现
除了加速,我们还可以设置摩擦力,比如我们有两种地形,冰雪路面和沼泽地形。
// 冰雪
contact.setFriction(0.25);
// 沼泽
contact.setFriction(0.85);
物理系统常见问题
- 不在 onLoad 中开启物理系统,而是在 start 中开启,无效的!
- 未设置碰撞分组,无效果。
- 带有刚体的物理节点,位置不受父节点影响的。
- 更新了物理碰撞盒的属性没生效?因为没调用 apply() 方法!或者在组件 enabled 为 false 时改变。
- 勾选了 sensor 可就没碰撞效果了。
- 如果你使用了物理系统,就最好通过力来运动物体了,除非是 Static 或者 Animated 再直接改变属性。
- Rigidbody 有个 getLinearVelocityFromWorldPoint() 方法可以得到线速度,通过方向你就知道主角是用头顶的方块还是用脚踩的。
- 修改全局重力 cc.director.getPhysicsManager().gravity = cc.v2(0, 0);
- 如果手机太卡,记得把物理刷新频率从 60 降为 30。
结语
有意思吧!我们下篇文章讲讲射线检测。
O(∩_∩)O~~
微信公众号
CocosCreator之KUOKUO带你做个加速带!起飞!相关推荐
- CocosCreator之KUOKUO带你做疯狂木板-变长(1)
本次引擎2.0.5 编辑工具VSCode 目标: 第一部分,手指点击变长的木板. 这种类型的微信小游戏还是很多滴,今天KUOKUO带大家做一做. 我们新建一个工程: 加个bk背景,保存为game场景. ...
- CocosCreator之KUOKUO带你做双摄像机-单独渲染UI
引擎版本 CocosCreator v2.1.2 引言 相信小伙伴们在做摄像机跟随主角的游戏时会遇到 UI 节点不动的问题,眼睁睁的看着按钮远去.如何解决呢?建立两个摄像机分开渲染即可. 问题演示 首 ...
- CocosCreator之KUOKUO带你做喵喵的跳跃
本次引擎2.0.5 编辑工具VSCode 如遇不会某个步骤可以先过一遍之前教程,或者下方评论,感谢支持! 目标:喵喵的跳跃 今天教大家CocosCreator的动作函数: 它可以实现平滑的每秒60帧左 ...
- CocosCreator之KUOKUO带你做个基于物理的跑酷游戏第二部分-做个动画加点炸弹
本次引擎2.0.5 编辑工具VSCode 目标:第二部分,做个主角动画,加入炸弹. 把帧动画资源导入,然后把zhujue大小改了,图片改为我们序列帧动画第一个. 素材结尾给出. 打开动画编辑器,弄一个 ...
- CocosCreator之KUOKUO带你做自己的艺术数字字体
实现效果 教程链接 https://www.bilibili.com/video/av55801008 O(∩_∩)O~~
- CocosCreator之KUOKUO带你做音乐可视化
摘要 音乐干听多没劲,来点可视化效果让音乐"动"起来!底部源码分享! 正文 说明 在浏览器端 AudioContext 是一个专门用于音频处理的接口,工作原理是将 AudioCon ...
- CocosCreator之KUOKUO带你做个电玩叠乌龟游戏
引擎版本: 2.0.10 编程语言: TypeScript 视频链接: https://www.bilibili.com/video/av57323107 开源地址在视频简介中. 欢迎大家去哔哩哔哩关 ...
- CocosCreator之KUOKUO带你做个基于物理引擎的绳子关节的duang~
本次引擎2.0.5 编辑工具VSCode 目标:基于物理引擎的绳子关节的duang~ 来吧,让我们走进物理世界! 新建工程: 单色精灵背景,单色精灵地面. 然后给ground加刚体,加个物理碰撞盒子. ...
- CocosCreator之KUOKUO带你做个基于物理引擎的轮子小车的duang~
本次引擎2.0.5 编辑工具VSCode 目标:基于物理引擎的轮子小车的duang~ 来吧,让我们走进物理世界! 新建工程: 单色精灵背景,单色精灵地面. 然后给ground加刚体,加个物理碰撞盒子. ...
最新文章
- vue.config.js配置代理不生效_iMac各种代理设置方法汇总
- 一致性Hash(Consistent Hashing)原理剖析
- 三个点拟合圆形的函数C#
- php中使用exec,system等函数调用系统命令
- linux用命令行进行无线连接,linux以命令行下配置连接wlan无线网卡
- 【TensorFlow】优化方法optimizer总结(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)解析(十三)
- centos7 致命错误:curl/curl.h:没有那个文件或目录 #include curl/curl.h
- 苹果召回部分产品;罗永浩锤子商城并入字节跳动;美团打车上线上海南京 | 极客头条...
- Go Elasticsearch 删除快速入门
- 2018-2019-1 20165208 《信息安全系统设计基础》第5周学习总结
- ADO.NET DataReader对象简介
- Git:常用命令(自用)
- idea设置护眼主题
- 利用Python爬取3万多条上海二手房信息,我得出的结论是?
- css font-size 失效,css font-size不管用的经解决方法
- 如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo
- 力扣(20.232)补9.6
- oracle 怎么看监听文件,【学习笔记】Oracle11G关于监听文件位置与监听文件大小限制...
- 又是一年推gal季(牛客OI周赛5-提高组)
- 在冒险中打拼:教师到手机大亨的打拼路
热门文章
- Linux进阶_时间同步服务
- 【Kettle 工具】如何安装及连接达梦数据库
- 如何关闭计算机Tcp5900端口,电脑135/139端口是干什么的 Windows如何关闭135/139端口方法...
- 基于Python实现看图说话和微表情识别【100010260】
- WAS用命令创建节点
- 淘宝导购网-爱淘购上线啦
- 录音播放系统(实现pcm转码mp3,wav)
- 【PTA R7-8】简单选择排序显示第K趟
- idea左边栏不见了怎么办
- PHP反射类ReflectionClass、异常处理Exception