关卡调整

This commit is contained in:
2025-08-17 21:12:35 +08:00
parent 1a25a566c8
commit b6ec65741a
3 changed files with 39 additions and 17 deletions

View File

@@ -57,9 +57,11 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU
if (enemyX > currentX) {
move.direction = 1; // 向右移动
view.node.setScale(1, 1, 1); // 面向右侧
view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧
} else {
move.direction = -1; // 向左移动
view.node.setScale(-1, 1, 1); // 面向左侧
view.node.getChildByName("top").setScale(-1, 1, 1); // 面向左侧
}
// 继续向敌人方向移动
@@ -96,8 +98,10 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU
// 设置朝向
if (direction === 1) {
view.node.setScale(1, 1, 1); // 面向右侧
view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧
} else {
view.node.setScale(-1, 1, 1); // 面向左侧
view.node.getChildByName("top").setScale(-1, 1, 1); // 面向左侧
}
// 确保不会超过目标位置
@@ -114,6 +118,7 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU
// 到达目标位置后,面向右侧(敌人方向)
move.direction = 1;
view.node.setScale(1, 1, 1); // 面向右侧
view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧
}
return;
}

View File

@@ -103,8 +103,9 @@ export class MissionMonCompComp extends CCComp { // 添加刷怪队列 - 使
const currentStage = smc.data.mission;
// 使用新的肉鸽关卡配置
const stageType = getStageType(currentStage);
const monsterConfigs = getStageMonsterConfigs(currentStage);
let level=smc.vmdata.mission_data.level
const stageType = getStageType(currentStage,level);
const monsterConfigs = getStageMonsterConfigs(currentStage,level);
console.log(`[MissionMonComp]:第${currentStage}关 - ${stageType}类型,怪物数量: ${monsterConfigs.length}`);
this.generateMonstersFromStageConfig(monsterConfigs);
}

View File

@@ -218,27 +218,40 @@ export function getMonsterEnhancement(monsterType: MonsterType, useRandom: boole
}
/**
* 根据关卡号判断关卡类型
* 根据关卡号和等级判断关卡类型
* @param stageNumber 关卡号从1开始
* @param level 等级1-5
* @returns 关卡类型
*/
export function getStageType(stageNumber: number): StageType {
export function getStageType(stageNumber: number, level: number = 1): StageType {
// 第10关的特殊规则
if (stageNumber % 10 === 0) {
return StageType.BOSS; // 每10关为Boss关
} else if (stageNumber % 5 === 0) {
return StageType.ELITE; // 每5关非10的倍数为精英关
} else {
return StageType.NORMAL; // 其他关卡为普通关
if (level === 5) {
return StageType.BOSS; // 第10关第5级为Boss关
} else if (level === 4) {
return StageType.ELITE; // 第10关第4级为精英关
} else {
return StageType.NORMAL; // 第10关1-3级为普通关
}
}
// 1-9关的规则
else {
if (level === 5) {
return StageType.ELITE; // 1-9关第5级为精英关
} else {
return StageType.NORMAL; // 1-9关1-4级为普通关
}
}
}
/**
* 生成关卡配置
* @param stageNumber 关卡号从1开始
* @param level 等级1-5
* @returns MonsterType数组格式
*/
export function generateStageConfig(stageNumber: number): MonsterType[] {
const stageType = getStageType(stageNumber);
export function generateStageConfig(stageNumber: number, level: number = 1): MonsterType[] {
const stageType = getStageType(stageNumber, level);
const rule = StageConfigRules[stageType];
const monsterArray: MonsterType[] = [];
@@ -249,7 +262,7 @@ export function generateStageConfig(stageNumber: number): MonsterType[] {
}
});
return monsterArray;
return monsterArray;
}
/**
@@ -276,10 +289,11 @@ export function getMonsterUUIDsByType(monsterType: MonsterType): number[] {
/**
* 获取当前关卡对应的所有怪物UUID数组
* @param stageNumber 关卡号
* @param level 等级1-5
* @returns 怪物UUID数组按关卡配置顺序排列
*/
export function getStageMonsterUUIDs(stageNumber: number): number[] {
const monsterTypes = generateStageConfig(stageNumber);
export function getStageMonsterUUIDs(stageNumber: number, level: number = 1): number[] {
const monsterTypes = generateStageConfig(stageNumber, level);
const monsterUUIDs: number[] = [];
monsterTypes.forEach(monsterType => {
@@ -297,11 +311,12 @@ export function getStageMonsterUUIDs(stageNumber: number): number[] {
/**
* 获取关卡怪物配置包含UUID和增强属性
* @param stageNumber 关卡号
* @param level 等级1-5
* @param useRandomBuff 是否使用随机buff
* @returns 完整的怪物配置数组
*/
export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boolean = true) {
const monsterTypes = generateStageConfig(stageNumber);
export function getStageMonsterConfigs(stageNumber: number, level: number = 1, useRandomBuff: boolean = true) {
const monsterTypes = generateStageConfig(stageNumber, level);
const stageMultipliers = getStageAllMultipliers(stageNumber);
const monsterConfigs = [];
@@ -312,10 +327,11 @@ export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boole
const enhancement = getMonsterEnhancement(monsterType, useRandomBuff);
monsterConfigs.push({
id: `stage_${stageNumber}_${index}`,
id: `stage_${stageNumber}_level_${level}_${index}`,
uuid: randomUUID,
type: monsterType,
stageNumber: stageNumber,
level: level,
enhancement: enhancement,
stageMultipliers: stageMultipliers
});