Cocos Creator开发的保卫萝卜如何判断游戏胜利逻辑,原来思路是这样:GameScene.isExistEnemy用来记录场上存在的enemy,怪物工厂生成的时候push进这个数组,当enemy被打死或走到home的时候就shift出数组,当全部波次完成时&&数组为空就游戏胜利,但是那个数组到最后都不为null。但发现后面数组怎么都不为空,换计数也不行




Cocos Creator开发的保卫萝卜如何判断游戏胜利逻辑,原来思路是这样:GameScene.isExistEnemy用来记录场上存在的enemy,怪物工厂生成的时候push进这个数组,当enemy被打死或走到home的时候就shift出数组,当全部波次完成时&&数组为空就游戏胜利,但是那个数组到最后都不为null。但发现后面数组怎么都不为空,换计数也不行




阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
Cocos Creator 中的游戏胜利判断逻辑可以通过检查场上是否存在敌人来实现。下面是一个简单的示例代码:
// GameScene.ts
import { Node } from 'cc';
export class GameScene extends Node {
private enemies: Node[] = [];
public isVictory(): boolean {
return !this.enemies.length;
}
public addEnemy(enemy: Node) {
this.enemies.push(enemy);
}
public removeEnemy(enemy: Node) {
this.enemies = this.enemies.filter((e) => e !== enemy);
}
}
在上面的代码中,我们定义了一个 GameScene 类,它继承自 Node。这个类维护了一个 enemies 数组,用来记录场上存在的敌人。
在 isVictory 方法中,我们检查 enemies 数组是否为空,如果为空,则返回 true,表示游戏胜利。
在 addEnemy 和 removeEnemy 方法中,我们将敌人添加或删除到 enemies 数组中。
在游戏中,你可以在怪物工厂生成敌人时调用 addEnemy 方法,在敌人死亡时调用 removeEnemy 方法。然后,在游戏结束时检查 isVictory 方法的返回值来判断游戏是否胜利。
enemies 数组用于记录场上存在的敌人。isVictory 方法检查 enemies 数组是否为空,如果为空,则返回 true,表示游戏胜利。addEnemy 方法将敌人添加到 enemies 数组中。removeEnemy 方法将敌人从 enemies 数组中删除。// GameScene.ts
import { Node } from 'cc';
export class GameScene extends Node {
private enemies: Node[] = [];
public isVictory(): boolean {
return !this.enemies.length;
}
public addEnemy(enemy: Node) {
this.enemies.push(enemy);
}
public removeEnemy(enemy: Node) {
this.enemies = this.enemies.filter((e) => e !== enemy);
}
}
// 使用示例
const gameScene = new GameScene();
gameScene.addEnemy(enemy1);
gameScene.addEnemy(enemy2);
if (gameScene.isVictory()) {
console.log('游戏胜利!');
} else {
console.log('游戏未胜利!');
}
在上面的示例代码中,我们创建了一个 GameScene 对象,然后添加了两个敌人。最后,我们检查 isVictory 方法的返回值来判断游戏是否胜利。