director.loadScene(“scene_start”);
}
😜小球预制体
要知道每次都要创建一个小球,且右上角有预览,所以我们需要一个预制体,后续通过实例化预制体来实现,并且该预制体初始化的时候能够自动随机不同的小球。
右键创建一个2D的Sprite,添加【CirleCollider2D】和【RigidBody2D】组件,刚体组件默认即可,碰撞组件需要修改下摩擦系数【Friction】和弹性系数【Restitution】,一个【0.2】一个【0.3】吧。【Radius】半径需要注意哦,不同的瓜半径不同,再加上碰撞的时候回来贴合的很合适,这个半径就需要和图片很重合最好,不能大也不能小。
对了我们顺便增加个弹性系数吧,这样有回弹效果就更Q啦。
然后增加个脚本,我们想想改脚本应该有啥功能
-
1.自动变化不同的球体
-
2.更改当前球体的Collider半径,这样能实现良好的碰撞检测
-
3.西瓜的碰撞事件以及碰撞后合并
-
4.死亡线的检测判定
//获取到精灵
let thisSprite = this.node.getComponent(Sprite);
if (thisSprite != null) {
thisSprite.spriteFrame = this.spriteFrames[index];
} else {
console.log(“changeBall的thisSprite为空”)
}
//动态改变创建的预制体的半径
let PrefabCollider = this.node.getComponent(CircleCollider2D);
if (PrefabCollider != null) {
if (index == 0) {
PrefabCollider.radius = (54 / 2 -1);
}
//……省略部分逻辑
ScriptStatic.CurrentBallRadius=PrefabCollider.radius;
} else {
console.log(“changeBall的PrefabCollider为空”)
}
碰撞的检测
我们使用的是2D的且直接针对Collider注册的监听
TempCollider.on(Contact2DType.BEGIN_CONTACT, this.MethodColliderEnter, this);
【MethodColliderEnter<