HarmonyOS应用开发实战:猫猫大作战-棋盘格子的占用检测
·


前言
在重力下落过程中,碰撞检测判断猫咪是否与其他已落地的猫咪重叠。算法核心是检查目标位置 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 排序处理——底部优先的下落顺序。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐

所有评论(0)