Monthly Archives: 五月 2020

Hello World

Cocos学习笔记——碰撞回调(1)

接上篇小球落地,如果想让小球落地后反弹,要怎么做哪?
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_碰撞

Hello World 日志

Cocos学习笔记——开启重力引擎

使用cocos自带的重力引擎起作用,这里以小球下落到地面为例,需要下面几步:
1. 添加“地面”节点,并添加RigidBody组件,type选Static;为了更好地演示“地面”的桌面,还需要配置碰撞组件PhysicsBoxCollider,也可以选择、调整为其他形状
2. 添加“小球”节点,并添加RigidBody组件,type选Dynamic,配置小球所受重力加速度GraviteScale;配置碰撞组件PhysicsCircleCollider,因为是球,所以这里选的是“原型”
3. 脚本的onLoad内开启重力引擎:

1
2
3
4
5
6
....
  onLoad(){
    cc.director.getPhysicsManager().enabled = true;
    cc.director.getPhysicsManager().gravity = cc.v2(0, -320);
  }
....

上面1、2两步,都可以在CocosCreator的可视化界面内完成配置,只要第3步需要写js

演示:http://dev.jiangkl.com/ex/dlx
转载请注明出处:http://www.jiangkl.com/2020/05/cocos_gravity