文章配图:LazyForEach 延迟加载

页面预览

前言

在「猫猫大作战」中,连击窗口决定了多长时间内的连续合并被视为连击。窗口太短玩家难以触发,太长则连击过于容易。

一、连击窗口

private readonly COMBO_WINDOW = 2000;  // 2 秒

private updateCombo(): void {
  const now = Date.now();
  if (now - this.combo.lastMergeTime < this.COMBO_WINDOW) {
    this.combo.count++;
    this.combo.multiplier = Math.min(this.combo.count, 5);
  } else {
    this.combo.count = 1;
    this.combo.multiplier = 1;
  }
  this.combo.lastMergeTime = now;
}

二、窗口设计

窗口长度 效果 感受
1 秒 极难触发 只在高速合并时有
2 秒(当前) 适中 正常操作可触发
3 秒 容易 连击常态化
5 秒 极易 连击失去奖励感

三、UI 反馈

// 连击窗口倒计时显示
@State comboProgress: number = 1.0;

startComboTimer(): void {
  const interval = setInterval(() => {
    const elapsed = Date.now() - this.combo.lastMergeTime;
    this.comboProgress = Math.max(0, 1 - elapsed / 2000);
    if (this.comboProgress <= 0) {
      clearInterval(interval);
      this.comboProgress = 0;
    }
  }, 100);
}

四、重置逻辑

// 超时重置
private clearComboIfExpired(): void {
  if (Date.now() - this.combo.lastMergeTime > this.COMBO_WINDOW) {
    this.combo = { count: 0, multiplier: 1, lastMergeTime: Date.now() };
  }
}

// 在游戏循环中周期检查
setInterval(() => this.clearComboIfExpired(), 100);

五、最佳实践

  1. 窗口 2 秒:平衡难度和收益
  2. UI 倒计时:让玩家感知窗口还剩多少时间
  3. 超时重置:到期自动重置计数器

总结

连击窗口控制合并的有效时间范围,2 秒窗口在难度和收益间取得平衡。核心要点:COMBO_WINDOW = 2000Date.now() 时间差计算、 超时自动重置

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐