接上篇小球落地,如果想让小球落地后反弹,要怎么做哪?
cocos的物理引擎提供了碰撞回调,需要如下步骤开启:
1. 参照前一篇,配置碰撞双方的RigidBody,开启重力引擎
2. 菜单选择“项目”-“项目设置”-“分组管理”,添加分组:ground、balls(这里,物理引擎的碰撞并不需要勾选balls与ground的碰撞关系)
3. “层级管理器”里,分别选择ground、ball节点,配置ground、balls分组
4. 脚本的onLoad内开启重力引擎,小球的脚本内添加碰撞回调:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | .... onLoad(){ cc.director.getPhysicsManager().enabled = true; } .... //碰撞开始时的回调,self为碰撞“主动方”, other为碰撞“被动方” onBeginContact(contact, self, other){ let v = self.body.linearVelocity; v.y = 1200;//设置一个向上的速度 self.body.linearVelocity = v; //注意,下面这种写法是无效的: //self.body.linearVelocity.y = 1200; } //碰撞处理结束时的回调 onEndContact(contact, self, other){ } .... |
注意:
a. onBeginContact、onEndContact是系统指定的碰撞引擎的回调方法,不需要绑定,也不能改名
b. 除了“物理组件”引起的碰撞,cocos还有正常运动时产生的碰撞,此时的回调方法是onCollisionEnter,详细使用方法将放到下一篇笔记里
演示:http://dev.jiangkl.com/ex/dlx2
转载请注明出处:http://www.jiangkl.com/2020/05/cocos_碰撞