文章配图:棋盘格子的占用检测

页面预览

前言

在重力下落过程中,碰撞检测判断猫咪是否与其他已落地的猫咪重叠。算法核心是检查目标位置 board[nextY][cat.x] 是否已被占用。

本文以 GameEngine.updateCats() 的碰撞逻辑为锚点,讲解棋盘格子的占用检测。

提示:本系列不讲 ArkTS 基础语法与环境搭建,假设你已跟完第 1–121 篇。本篇是阶段四第 122 篇。

一、碰撞检测逻辑

1.1 核心检测

const nextY = cat.y + 1;

if (nextY >= GameConfig.BOARD_HEIGHT) {
  // 到底部边界
  cat.falling = false;
  this.placeCatOnBoard(cat);
} else if (this.board[nextY][cat.x] !== null) {
  // 碰撞到已占位的猫咪
  cat.falling = false;
  this.placeCatOnBoard(cat);
} else {
  cat.y = nextY;  // 无碰撞,继续下落
}

1.2 碰撞的两种情形

情形 条件 结果
底部边界 nextY >= BOARD_HEIGHT 着陆
猫咪阻挡 board[nextY][cat.x] !== null 着陆

二、总结

碰撞检测通过判断棋盘指定位置是否非空实现,配合边界检测确保猫咪不会越界。

核心要点

  • board[nextY][cat.x] !== null 检测目标位是否被占用
  • nextY >= BOARD_HEIGHT 检测是否到达底部

下一篇预告:第 123 篇将深入 sort 排序处理——底部优先的下落顺序。

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


相关资源:

Logo

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

更多推荐