月明星稀之夜 2025-04-30 22:06 采纳率: 0%
浏览 6

cocos开发保卫萝卜项目的胜利判断逻辑

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

img

img

img

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-30 22:28
    关注

    阿里嘎多学长整理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,表示游戏胜利。

    addEnemyremoveEnemy 方法中,我们将敌人添加或删除到 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 方法的返回值来判断游戏是否胜利。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月30日