|
@@ -1179,6 +1179,9 @@ class PlayScene extends Phaser.Scene {
|
|
|
onBomb(bomb) {
|
|
|
this.bombExplode = true;
|
|
|
|
|
|
+ // 屏幕震动效果
|
|
|
+ this.shakeScreen();
|
|
|
+
|
|
|
// 停止所有水果的物理运动
|
|
|
this.fruits.forEach(fruit => {
|
|
|
if (fruit.getSprite() && fruit.getSprite().body) {
|
|
@@ -1205,6 +1208,44 @@ class PlayScene extends Phaser.Scene {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ // 添加屏幕震动方法
|
|
|
+ shakeScreen() {
|
|
|
+ // 获取主相机
|
|
|
+ const camera = this.cameras.main;
|
|
|
+
|
|
|
+ // 保存相机初始位置
|
|
|
+ const startX = camera.x;
|
|
|
+ const startY = camera.y;
|
|
|
+
|
|
|
+ // 震动持续时间(ms)
|
|
|
+ const duration = 500;
|
|
|
+ // 震动强度
|
|
|
+ const intensity = 8;
|
|
|
+ // 震动频率控制
|
|
|
+ const frequency = 20;
|
|
|
+
|
|
|
+ // 计算震动次数
|
|
|
+ const shakes = duration / frequency;
|
|
|
+ let shakeCount = 0;
|
|
|
+
|
|
|
+ // 创建震动定时器
|
|
|
+ const shakeInterval = setInterval(() => {
|
|
|
+ if (shakeCount < shakes) {
|
|
|
+ // 随机生成震动偏移量
|
|
|
+ const offsetX = Phaser.Math.Between(-intensity, intensity);
|
|
|
+ const offsetY = Phaser.Math.Between(-intensity, intensity);
|
|
|
+
|
|
|
+ // 应用震动
|
|
|
+ camera.setPosition(startX + offsetX, startY + offsetY);
|
|
|
+ shakeCount++;
|
|
|
+ } else {
|
|
|
+ // 震动结束,恢复相机位置
|
|
|
+ clearInterval(shakeInterval);
|
|
|
+ camera.setPosition(startX, startY);
|
|
|
+ }
|
|
|
+ }, frequency);
|
|
|
+ }
|
|
|
+
|
|
|
loseCount() {
|
|
|
if (this.lostCount === 1) {
|
|
|
this.lostAnim(this.x, 'xf');
|