feat: 启用物理调试绘制并调整技能配置与移动逻辑

- 启用PhysicsSystem2D的Aabb调试绘制以辅助碰撞检测
- 将射手英雄的技能由[6002,6100]更新为[6005,6006]
- 为SMoveComp添加isHorizontal属性,强制水平移动时保持Y坐标不变
- 技能施放延迟优先使用技能配置的ready值,提高配置灵活性
- 将技能6001和6005的结束类型由animationEnd改为collision,使伤害触发更精确
This commit is contained in:
walkpan
2026-03-15 13:03:34 +08:00
parent 69c55400ba
commit 211f48b6aa
6 changed files with 20 additions and 5 deletions

View File

@@ -12,7 +12,7 @@ const { ccclass, property } = _decorator;
@ccclass('Main')
export class Main extends Root {
start() {
// PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb
// |EPhysics2DDrawFlags.Pair
// |EPhysics2DDrawFlags.CenterOfMass
// |EPhysics2DDrawFlags.Joint

View File

@@ -213,7 +213,7 @@ export const SkillSet: Record<number, SkillConfig> = {
6001: {
uuid:6001,name:"空挥",sp_name:"atk_s1",icon:"1026",TGroup:TGroup.Enemy,TType:TType.Frontline,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_num:1,hit:1,hitcd:0.2,speed:720,with:0,
ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,
ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.collision,
buffs:[],debuffs:[],info:"对前方目标造成100%攻击的伤害",
},
6002: {
@@ -237,7 +237,7 @@ export const SkillSet: Record<number, SkillConfig> = {
6005: {
uuid:6005,name:"蓝箭",sp_name:"arrow_blue",icon:"1135",TGroup:TGroup.Enemy,TType:TType.Frontline,readyAnm:"",endAnm:"",act:"atk",DTType:DTType.single,
ap:100,hit_num:1,hit:1,hitcd:0.2,speed:720,with:0,
ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.animationEnd,
ready:0,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,
buffs:[],debuffs:[],info:"对前方单个目标造成100%攻击的伤害",
},
6006: {

View File

@@ -156,7 +156,7 @@ export const HeroInfo: Record<number, heroInfo> = {
buff:[],info:"奥术法师"},
5003:{uuid:5003,name:"射手",icon:"1001",path:"ha1", fac:FacSet.HERO, kind:2,as:1,ss:5,
type:HType.remote,lv:1,hp:180,ap:30,speed:140,skills:[6002,6100],
type:HType.remote,lv:1,hp:180,ap:30,speed:140,skills:[6005,6006],
rangeType: SkillRange.Long,
buff:[],info:"射手"},

View File

@@ -67,7 +67,12 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
if (targets.length === 0) return;
heroView.playSkillEffect(s_uuid);
const isMainSkill = s_uuid === heroAttrs.skill_id;
const delay = GameConst.Battle.SKILL_CAST_DELAY;
// 优先使用技能配置的前摇时间,否则使用全局默认值
// 注意:这里仍然是基于时间的延迟,受帧率波动影响。
// 若需精确同步,建议在动画中添加帧事件并在 HeroViewComp 中监听。
const delay = config.ready > 0 ? config.ready : GameConst.Battle.SKILL_CAST_DELAY;
heroView.scheduleOnce(() => {
if (!heroView.node || !heroView.node.isValid || heroAttrs.is_dead) return;
this.applyPrimaryEffect(entity, s_uuid, config, heroView, targets);

View File

@@ -42,6 +42,9 @@ export class SMoveDataComp extends ecs.Comp {
/** 结束类型 */
endType: EType = EType.collision;
/** 是否强制水平移动 */
isHorizontal: boolean = true;
/** 攻击偏移X - 从视图层传递 */
atk_x: number = 0;
@@ -77,6 +80,7 @@ export class SMoveDataComp extends ecs.Comp {
this.s_uuid = 0;
this.runType = RType.linear;
this.endType = EType.collision;
this.isHorizontal = true;
this.atk_x = 0;
this.atk_y = 0;
this.isMoving = false;

View File

@@ -70,6 +70,12 @@ export class SMoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
node.position.y + moveComp.atk_y,
node.position.z
);
// 如果开启水平移动开关强制目标Y等于起点Y
if (moveComp.isHorizontal) {
moveComp.targetPos.y = linearPos.y;
}
moveComp.rePos(linearPos);
// 设置旋转角度