赞
踩
有趣的物理小游戏总能让小伙伴们爱不释手,而 CocosCreator 的内置物理引擎让其开发变得更加简单。今天 KUOKUO 就为大家带来物理的加速带,让主角小恐龙起飞!
在 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);
有意思吧!我们下篇文章讲讲射线检测。
O(∩_∩)O~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。