From 75ef3af42bb75223cfc7663a2965223195976556 Mon Sep 17 00:00:00 2001 From: pan Date: Thu, 20 Aug 2026 15:38:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(hero):=20=E7=BB=9F=E4=B8=80=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E8=8B=B1=E9=9B=84=E9=A2=84=E5=88=B6=E4=BD=93=E5=B0=BA?= =?UTF-8?q?=E5=AF=B8=E4=B8=8E=E5=B1=9E=E6=80=A7=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修正多个英雄prefab的碰撞盒、显示尺寸参数,对齐统一规格 2. 调整mb1/3/4/5/6的本地位置参数适配新尺寸 3. 翻倍英雄基础血量属性适配平衡调整 4. 优化HeroAnmComp代码格式与动画播放逻辑 --- assets/resources/game/heros/mb1.prefab | 12 ++-- assets/resources/game/heros/mb2.prefab | 10 +-- assets/resources/game/heros/mb3.prefab | 12 ++-- assets/resources/game/heros/mb4.prefab | 16 ++--- assets/resources/game/heros/mb5.prefab | 18 ++--- assets/resources/game/heros/mb6.prefab | 14 ++-- assets/script/game/common/config/heroSet.ts | 14 ++-- assets/script/game/hero/HeroAnmComp.ts | 75 ++++++++++++--------- 8 files changed, 93 insertions(+), 78 deletions(-) diff --git a/assets/resources/game/heros/mb1.prefab b/assets/resources/game/heros/mb1.prefab index 4c0af7cc..8113fc07 100644 --- a/assets/resources/game/heros/mb1.prefab +++ b/assets/resources/game/heros/mb1.prefab @@ -250,7 +250,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -85.933, + "y": -86.962, "z": 0 }, "_lrot": { @@ -981,8 +981,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 100 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1090,12 +1090,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 50 + "y": 75 }, "_size": { "__type__": "cc.Size", - "width": 30, - "height": 100 + "width": 150, + "height": 150 }, "_id": "" }, diff --git a/assets/resources/game/heros/mb2.prefab b/assets/resources/game/heros/mb2.prefab index b829489a..edaaf231 100644 --- a/assets/resources/game/heros/mb2.prefab +++ b/assets/resources/game/heros/mb2.prefab @@ -981,8 +981,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 100 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1090,12 +1090,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 50 + "y": 75 }, "_size": { "__type__": "cc.Size", - "width": 30, - "height": 100 + "width": 150, + "height": 150 }, "_id": "" }, diff --git a/assets/resources/game/heros/mb3.prefab b/assets/resources/game/heros/mb3.prefab index 9748fec0..434a9725 100644 --- a/assets/resources/game/heros/mb3.prefab +++ b/assets/resources/game/heros/mb3.prefab @@ -250,7 +250,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -84.866, + "y": -84.432, "z": 0 }, "_lrot": { @@ -978,8 +978,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 100 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1087,12 +1087,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 50 + "y": 75 }, "_size": { "__type__": "cc.Size", - "width": 30, - "height": 100 + "width": 150, + "height": 150 }, "_id": "" }, diff --git a/assets/resources/game/heros/mb4.prefab b/assets/resources/game/heros/mb4.prefab index f97a3efd..93dbe84e 100644 --- a/assets/resources/game/heros/mb4.prefab +++ b/assets/resources/game/heros/mb4.prefab @@ -250,7 +250,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -84.192, + "y": -57.035, "z": 0 }, "_lrot": { @@ -290,8 +290,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 384, - "height": 384 + "width": 256, + "height": 256 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -981,8 +981,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 100 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1090,12 +1090,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 50 + "y": 75 }, "_size": { "__type__": "cc.Size", - "width": 30, - "height": 100 + "width": 150, + "height": 150 }, "_id": "" }, diff --git a/assets/resources/game/heros/mb5.prefab b/assets/resources/game/heros/mb5.prefab index cf58feab..1960498e 100644 --- a/assets/resources/game/heros/mb5.prefab +++ b/assets/resources/game/heros/mb5.prefab @@ -60,7 +60,7 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -0.041, + "x": 0, "y": 0, "z": 0 }, @@ -250,7 +250,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -87.202, + "y": -57.266, "z": 0 }, "_lrot": { @@ -290,8 +290,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 384, - "height": 384 + "width": 256, + "height": 256 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -978,8 +978,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 100 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1087,12 +1087,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 50 + "y": 75 }, "_size": { "__type__": "cc.Size", - "width": 30, - "height": 100 + "width": 150, + "height": 150 }, "_id": "" }, diff --git a/assets/resources/game/heros/mb6.prefab b/assets/resources/game/heros/mb6.prefab index a62c8cc8..906fc54c 100644 --- a/assets/resources/game/heros/mb6.prefab +++ b/assets/resources/game/heros/mb6.prefab @@ -250,7 +250,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -81.733, + "y": -53.96, "z": 0 }, "_lrot": { @@ -290,8 +290,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 384, - "height": 384 + "width": 256, + "height": 256 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -978,8 +978,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 200, - "height": 220 + "width": 150, + "height": 150 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1087,12 +1087,12 @@ "_offset": { "__type__": "cc.Vec2", "x": 0, - "y": 110 + "y": 75 }, "_size": { "__type__": "cc.Size", "width": 150, - "height": 220 + "height": 150 }, "_id": "" }, diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index ba4490e1..3ad8f6f8 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -1,4 +1,4 @@ -import { v3 } from "cc" +import { v3 } from "cc" import { BoxSet, FacSet, FightSet } from "./GameSet" import { SkillOverrides, TGroup, SkillSet, FieldSkillSet, SkillConfig, SkillKind, FieldSkillConfig, FieldSkillType, mergeSkillParams } from "./SkillSet" import { BuffList, BuffConfig, ModOp } from "./BuffSet" @@ -145,12 +145,12 @@ export const HRoleName: Record = { * Why: 局外升级机制将在加载时(Hero.ts / Mon.ts)统一重算属性,配置表只承担"基准+增量"的静态表达。 */ export const HERO_ROLE_BASE: Record = { - [HRole.Tank]: { hp: 300, ap: 20, def: 50 }, // 坦克:高防高血,前排承伤 - [HRole.Warrior]: { hp: 280, ap: 22, def: 30 }, // 战士:均衡 - [HRole.Assassin]: { hp: 280, ap: 22, def: 10 }, // 刺客:低防,近战爆发 - [HRole.Archer]: { hp: 140, ap: 32, def: 10 }, // 射手:低防,远程物理主C - [HRole.Mage]: { hp: 140, ap: 32, def: 10 }, // 法师:低防,远程增益 - [HRole.Support]: { hp: 140, ap: 32, def: 15 }, // 辅助:低防,光环/治疗 + [HRole.Tank]: { hp: 600, ap: 20, def: 50 }, // 坦克:高防高血,前排承伤 + [HRole.Warrior]: { hp: 560, ap: 22, def: 30 }, // 战士:均衡 + [HRole.Assassin]: { hp: 560, ap: 22, def: 10 }, // 刺客:低防,近战爆发 + [HRole.Archer]: { hp: 280, ap: 32, def: 10 }, // 射手:低防,远程物理主C + [HRole.Mage]: { hp: 280, ap: 32, def: 10 }, // 法师:低防,远程增益 + [HRole.Support]: { hp: 280, ap: 32, def: 15 }, // 辅助:低防,光环/治疗 }; /** diff --git a/assets/script/game/hero/HeroAnmComp.ts b/assets/script/game/hero/HeroAnmComp.ts index 7eec8acf..802f3406 100644 --- a/assets/script/game/hero/HeroAnmComp.ts +++ b/assets/script/game/hero/HeroAnmComp.ts @@ -5,15 +5,15 @@ import { FlashSprite } from "./hit-flash-white/scripts/FlashSprite"; const { ccclass, property } = _decorator; @ccclass('HeroAnmComp') -export default class HeroAnmComp extends Component{ - fsSprite:FlashSprite = null!; - private anmcon:any=null +export default class HeroAnmComp extends Component { + fsSprite: FlashSprite = null!; + private anmcon: any = null private _hasStop = true; private _atkIndex = 0; - private default_anim:string='idle' - anms:any[]=["idle","move","atk0","max0","max1"] - onLoad () { - this.anmcon=this.node.getComponent(Animation) + private default_anim: string = 'idle' + anms: any[] = ["idle", "move", "atk0", "max0", "max1"] + onLoad() { + this.anmcon = this.node.getComponent(Animation) this.fsSprite = this.node.getComponent(FlashSprite); this.anmcon.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); } @@ -24,46 +24,61 @@ export default class HeroAnmComp extends Component{ } } - stop () { + /** 大招是否播放中(最高优先级,期间禁止一切动画切换) */ + private get maxPlaying(): boolean { + return !!(this.anmcon.getState("max0")?.isPlaying || this.anmcon.getState("max1")?.isPlaying); + } + /** 普攻是否播放中(次优先级,仅可被大招打断) */ + private get atkPlaying(): boolean { + return !!this.anmcon.getState("atk0")?.isPlaying; + } + /** buff 是否播放中(可被大招/普攻打断,但拦截 idle/move) */ + private get buffPlaying(): boolean { + return !!this.anmcon.getState("buff")?.isPlaying; + } + + stop() { this._hasStop = true; } - onAnimationFinished(type:Animation.EventType, state:AnimationState){ - if(state.name!="idle"&&state.name!="move"){ + onAnimationFinished(type: Animation.EventType, state: AnimationState) { + if (state.name != "idle" && state.name != "move") { this.anmcon.play(this.default_anim) } } - atked(){ + atked() { this.fsSprite.clickFlash(); } - move () { - if(this.anmcon.getState("move").isPlaying) return - this.anmcon.play("move") - this.default_anim='move' + move() { + if (this.maxPlaying || this.atkPlaying || this.buffPlaying) return + if (this.anmcon.getState("move").isPlaying) return + this.anmcon.play("move") + this.default_anim = 'move' } - atk () { - if(this.anmcon.getState("max0").isPlaying||this.anmcon.getState("max1").isPlaying) return + atk() { + if (this.maxPlaying) return this.anmcon.play(`atk0`) } - max () { - if(this.anmcon.getState("max0").isPlaying||this.anmcon.getState("max1").isPlaying) return - this.anmcon.play("max0") + max() { + if (this.maxPlaying) return + this.anmcon.play("max0") } - play(anm:string=""){ - if(anm==="") return - if(this.anmcon.getState("max0").isPlaying||this.anmcon.getState("max1").isPlaying) return + play(anm: string = "") { + if (anm === "") return + if (this.maxPlaying) return this.anmcon.play(anm) } - idle () { - if(this.anmcon.getState("idle").isPlaying) return + idle() { + if (this.maxPlaying || this.atkPlaying || this.buffPlaying) return + if (this.anmcon.getState("idle").isPlaying) return this.anmcon.play("idle") - this.default_anim='idle' + this.default_anim = 'idle' } - buff(){ - if(this.anmcon.getState("max0").isPlaying||this.anmcon.getState("max1").isPlaying) return + buff() { + if (this.maxPlaying) return this.anmcon.play("buff") } - dead(){ - + dead() { + } }