You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser3 随机星星功能开发:收集后逐次增加生成数量的问题咨询

实现方案

要实现收集完当前批次所有星星后,下次生成数量逐次+1的效果,你需要新增两个状态变量记录当前批次星星数量、已收集数量,再新增一个动态生成星星的方法,修改原有收集逻辑的判断即可,修改后完整代码如下:

初始化部分代码

// 新增两个状态变量,放在场景初始化的位置
let currentStarBatch = 1; // 初始第一批次生成1颗星星
let collectedThisBatch = 0; // 记录当前批次已收集的星星数量
let score = 0;
let scoreText;

// 初始化物理星星组,暂不默认生成内容,后续调用方法动态生成
stars = this.physics.add.group();

// 原有玩家和星星的碰撞检测逻辑保留
this.physics.add.overlap(player, stars, collectStar, null, this);

// 新增:批量生成指定数量星星的公共方法
function spawnStars(count) {
  // 先清空当前组里残留的星星,避免和新批次重叠
  stars.clear(true, true);
  collectedThisBatch = 0;
  // 循环生成对应数量的星星,位置随机
  for(let i = 0; i < count; i++) {
    const x = Phaser.Math.RND.between(0, 900);
    const y = Phaser.Math.RND.between(0, 600);
    stars.create(x, y, 'star');
  }
}

// 场景初始化完成后,先生成第一批次的1颗星星
spawnStars(currentStarBatch);

收集星星逻辑修改

function collectStar (player,star){
  star.disableBody(true, true);
  score += 2;    // COUNT BY 2
  scoreText.setText('Score: ' + score);
  // 新增收集计数和批次判断逻辑
  collectedThisBatch++;
  // 判断当前批次所有星星是否都已收集完成
  if(collectedThisBatch === currentStarBatch) {
    // 下一批次星星数量+1
    currentStarBatch++;
    // 生成新批次的星星
    spawnStars(currentStarBatch);
  }
}

注:原有星星组配置里的repeat和setXY是初始化时批量生成固定数量的配置,改成上述动态生成的方式更灵活,完全匹配你要的收集完N颗就生成N+1颗的需求。

内容的提问来源于stack exchange,提问作者ocko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:18:03