| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /**
- * 测试敌人血量显示修复效果
- * 用于验证僵尸短时间被多个植物击中后血量显示是否正常
- */
- const { find } = require('cc');
- // 测试函数:模拟多次快速伤害
- function testMultipleDamage() {
- console.log('=== 开始测试敌人血量显示修复 ===');
-
- // 查找敌人控制器
- const enemyControllerNode = find('Canvas/GameLevelUI/EnemyController');
- if (!enemyControllerNode) {
- console.error('未找到EnemyController节点');
- return;
- }
-
- const enemyController = enemyControllerNode.getComponent('EnemyController');
- if (!enemyController) {
- console.error('未找到EnemyController组件');
- return;
- }
-
- // 获取当前活跃的敌人
- const activeEnemies = enemyController.getActiveEnemies();
- if (activeEnemies.length === 0) {
- console.log('当前没有活跃的敌人,请先生成敌人');
- return;
- }
-
- const testEnemy = activeEnemies[0];
- const enemyInstance = testEnemy.getComponent('EnemyInstance');
-
- if (!enemyInstance) {
- console.error('敌人节点没有EnemyInstance组件');
- return;
- }
-
- console.log(`测试目标: ${enemyInstance.getEnemyName()}`);
- console.log(`初始血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`);
-
- // 模拟短时间内多次受伤
- const damages = [5, 3, 7, 2, 4]; // 不同的伤害值
- let delay = 0;
-
- damages.forEach((damage, index) => {
- setTimeout(() => {
- if (enemyInstance && enemyInstance.node && enemyInstance.node.isValid) {
- console.log(`第${index + 1}次伤害: ${damage}`);
- enemyInstance.takeDamage(damage, Math.random() > 0.8); // 20%暴击率
- console.log(`当前血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`);
- }
- }, delay);
- delay += 100; // 每次间隔100毫秒
- });
-
- // 5秒后检查最终状态
- setTimeout(() => {
- if (enemyInstance && enemyInstance.node && enemyInstance.node.isValid) {
- console.log('=== 测试完成 ===');
- console.log(`最终血量: ${enemyInstance.health}/${enemyInstance.maxHealth}`);
- console.log('如果血量显示正常且动画流畅,说明修复成功');
- } else {
- console.log('敌人已被消灭');
- }
- }, 5000);
- }
- // 导出测试函数
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = { testMultipleDamage };
- }
- // 如果在浏览器环境中直接运行
- if (typeof window !== 'undefined') {
- window.testEnemyHealthFix = testMultipleDamage;
- console.log('测试函数已挂载到 window.testEnemyHealthFix()');
- }
- console.log('敌人血量显示修复测试脚本已加载');
- console.log('使用方法: 在游戏中生成敌人后,调用 testMultipleDamage() 函数进行测试');
|