diff --git a/assets/resources/game/map/map_rpg.prefab b/assets/resources/game/map/map_rpg.prefab index dff80237..dd12e72d 100644 --- a/assets/resources/game/map/map_rpg.prefab +++ b/assets/resources/game/map/map_rpg.prefab @@ -389,7 +389,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 30.788, - "y": -114.71, + "y": -14.71, "z": 0 }, "_lrot": { @@ -3607,8 +3607,6 @@ "__id__": 0 }, "fileId": "c4IqMKgXNExa5w4EAciRxE", - "instance": null, - "targetOverrides": null, "nestedPrefabInstanceRoots": null }, { @@ -3697,7 +3695,7 @@ "_isTrimmedMode": true, "_useGrayscale": false, "_atlas": null, - "_id": "e9qkWRtmVPf4oSiCZ+e0yg" + "_id": "a9O91cLlJGoY5y1TC9zgB9" }, { "__type__": "cc.CompPrefabInfo", @@ -3956,7 +3954,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": -100, + "y": 0, "z": 0 }, "_lrot": { diff --git a/assets/resources/game/skill/atk/atk_fires.prefab b/assets/resources/game/skill/atk/atk_fires.prefab index cfb1a18e..8bfa4560 100644 --- a/assets/resources/game/skill/atk/atk_fires.prefab +++ b/assets/resources/game/skill/atk/atk_fires.prefab @@ -313,8 +313,10 @@ }, "runType": 0, "hasReady": false, - "ReadyTime": 0.5, - "postion_y": 0, + "ReadyTime": 0.1, + "ready_y": 0, + "atk_x": 10, + "atk_y": 40, "_id": "" }, { diff --git a/assets/resources/game/skill/prefab/atk_fire_1.prefab b/assets/resources/game/skill/prefab/atk_fire_1.prefab index 06218679..34ca6ca4 100644 --- a/assets/resources/game/skill/prefab/atk_fire_1.prefab +++ b/assets/resources/game/skill/prefab/atk_fire_1.prefab @@ -111,8 +111,8 @@ }, "_lscale": { "__type__": "cc.Vec3", - "x": 0.8, - "y": 0.8, + "x": 1.3, + "y": 1.3, "z": 1 }, "_mobility": 0, diff --git a/assets/resources/gui/role_controller.prefab b/assets/resources/gui/role_controller.prefab index cdc29026..003fed0e 100644 --- a/assets/resources/gui/role_controller.prefab +++ b/assets/resources/gui/role_controller.prefab @@ -5607,7 +5607,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": 600, + "y": 700, "z": 0 }, "_lrot": { @@ -6388,7 +6388,7 @@ "_top": 460.8, "_bottom": 450, "_horizontalCenter": 0, - "_verticalCenter": -40, + "_verticalCenter": 60, "_isAbsLeft": true, "_isAbsRight": true, "_isAbsTop": true, diff --git a/assets/script/game/BezierMove/BezierMove.ts b/assets/script/game/BezierMove/BezierMove.ts index d6f565e2..5eeca3ea 100644 --- a/assets/script/game/BezierMove/BezierMove.ts +++ b/assets/script/game/BezierMove/BezierMove.ts @@ -1,6 +1,7 @@ import { _decorator, Component, Node, view, UITransform, Vec3, math, EventHandler, Graphics, Color, TweenEasing, Enum } from 'cc'; import { SkillCom } from '../skills/SkillCom'; import { smc } from '../common/SingletonModuleComp'; +import { AtkConCom } from '../skill/AtkConCom'; const { ccclass, property } = _decorator; // 定义缓动类型枚举 @@ -154,7 +155,9 @@ export class BezierMove extends Component { this._isMoving = false; // 触发移动完成事件 // console.log("onMoveComplete") - let skill=this.node.getComponent(SkillCom) + let scom=this.node.getComponent(SkillCom) + let acom=this.node.getComponent(AtkConCom) + let skill=scom?scom:acom if(skill){ skill.doDestroy() } diff --git a/assets/script/game/common/config/BoxSet.ts b/assets/script/game/common/config/BoxSet.ts index 473b289a..e21190b3 100644 --- a/assets/script/game/common/config/BoxSet.ts +++ b/assets/script/game/common/config/BoxSet.ts @@ -28,7 +28,7 @@ export enum BoxSet { MONSTER_START = 360, END_POINT = 360, //游戏地平线 - GAME_LINE = 130, + GAME_LINE = 0, CSKILL_X = 320, CSKILL_Y = 400, //攻击距离 diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index ddb6e2b9..7599b249 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -82,19 +82,19 @@ export const getMonList = (quality:number=0)=>{ } export const HeroPos={ - 0:{pos:v3(-290,-100,0)}, - 1:{pos:v3(0,-100,0)}, - 2:{pos:v3(-100,-100,0)}, + 0:{pos:v3(0,0,0)}, + 1:{pos:v3(0,0,0)}, + 2:{pos:v3(0,0,0)}, } export const MonSet = { - 0:{pos:v3(240,-100,0)}, - 1:{pos:v3(320,-100,0)}, - 2:{pos:v3(360,-100,0)}, - 3:{pos:v3(400,-100,0)}, - 4:{pos:v3(440,-100,0)}, - 5:{pos:v3(480,-100,0)}, - 6:{pos:v3(520,-100,0)}, - 7:{pos:v3(560,-100,0)}, + 0:{pos:v3(240,0,0)}, + 1:{pos:v3(320,0,0)}, + 2:{pos:v3(360,0,0)}, + 3:{pos:v3(400,0,0)}, + 4:{pos:v3(440,0,0)}, + 5:{pos:v3(480,0,0)}, + 6:{pos:v3(520,0,0)}, + 7:{pos:v3(560,0,0)}, } diff --git a/assets/script/game/hero/SkillConComp.ts b/assets/script/game/hero/SkillConComp.ts index 4dcfbea9..1d050f16 100644 --- a/assets/script/game/hero/SkillConComp.ts +++ b/assets/script/game/hero/SkillConComp.ts @@ -112,15 +112,11 @@ export class SkillConComp extends CCComp { if (!this.node || !this.node.isValid || !this.HeroView || !this.HeroView.node || !this.HeroView.node.isValid) { return; } - if(config.uuid==6021){ - console.log("[SkillConComp] 技能起始坐标:",this.HeroView.node.position.x + BoxSet.ATK_X * this.HeroView.scale,this.HeroView.node.position.y + BoxSet.ATK_Y,0) - } sEnt.load( - new Vec3(this.HeroView.node.position.x + BoxSet.ATK_X * this.HeroView.scale, - this.HeroView.node.position.y + BoxSet.ATK_Y, 0), + new Vec3(this.HeroView.node.position.x,this.HeroView.node.position.y,0), this.node.parent, config.uuid, - [new Vec3(target.x, target.y+BoxSet.ATK_Y, 0)], + [new Vec3(target.x, target.y, 0)], this.HeroView, dmg ); diff --git a/assets/script/game/skill/AtkConCom.ts b/assets/script/game/skill/AtkConCom.ts index 1c60380d..7df1e7e2 100644 --- a/assets/script/game/skill/AtkConCom.ts +++ b/assets/script/game/skill/AtkConCom.ts @@ -25,8 +25,6 @@ export class AtkConCom extends CCComp { targetPos: Vec3 = v3(); // 目标位置 group:number = 0; //阵营 fac:number=0; //阵营 - caster:any=null; - // 战斗相关运行时数据 ap:number=0; burn_count:number=0; @@ -85,6 +83,34 @@ export class AtkConCom extends CCComp { } } + do_parabolic(){ + let bm=this.node.getComponent(BezierMove) + this.node.angle +=10 + // bm.speed=700 + if(this.group==BoxSet.MONSTER) {bm.controlPointSide=-1 } + bm.rotationSmoothness=0.6 + bm.moveTo(this.targetPos) + } + do_line(){ + let bm=this.node.getComponent(BezierMove) + let s_x=this.startPos.x + let s_y=this.startPos.y + let t_x=this.targetPos.x + let t_y=this.targetPos.y + // 设定目标x + this.targetPos.x = 400; + if(this.group == BoxSet.MONSTER) { + bm.controlPointSide = -1; + this.targetPos.x = -400; + } + // 计算斜率 + const k = (t_y - s_y) / (t_x - s_x); + // 按直线公式计算新的y + this.targetPos.y = k * (this.targetPos.x - s_x) + s_y; + bm.controlPointOffset=0 + bm.rotationSmoothness=0.6 + bm.moveTo(this.targetPos); + } onAnimationFinished(){ // console.log("[SkillCom]:onAnimationFinished",this.s_uuid) if (!this.skillConfig) return; diff --git a/assets/script/game/skill/SkillEnt.ts b/assets/script/game/skill/SkillEnt.ts index ff3cdff5..5e710a7f 100644 --- a/assets/script/game/skill/SkillEnt.ts +++ b/assets/script/game/skill/SkillEnt.ts @@ -30,9 +30,7 @@ load(startPos: Vec3, parent: Node, uuid: number, targetPos: any[], caster:Hero console.error("[Skill] 预制体加载失败:", path); return; } - if(uuid==6001){ - console.log("load skill startPos",startPos) - } + console.log("load skill startPos",startPos) const node: Node = instantiate(prefab); node.parent = parent; // 设置节点属性 @@ -52,6 +50,8 @@ load(startPos: Vec3, parent: Node, uuid: number, targetPos: any[], caster:Hero Object.assign(SComp, { // 核心标识 s_uuid: uuid, + cName:caster.hero_name, + scale: caster.node.scale.x, // 位置和施法者信息 startPos: startPos, targetPos: targetPos, diff --git a/assets/script/game/skill/SkillViewCom.ts b/assets/script/game/skill/SkillViewCom.ts index 90741ed2..6ee532a4 100644 --- a/assets/script/game/skill/SkillViewCom.ts +++ b/assets/script/game/skill/SkillViewCom.ts @@ -1,9 +1,10 @@ -import { _decorator, instantiate, Node, Prefab } from "cc"; +import { _decorator, instantiate, Node, Prefab, v3, Vec3 } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { HeroViewComp } from "../hero/HeroViewComp"; import { BuffAttr, RType, SkillSet } from "../common/config/SkillSet"; import { AtkConCom } from "./AtkConCom"; +import { BoxSet } from "../common/config/BoxSet"; const { ccclass, property } = _decorator; @@ -21,17 +22,26 @@ export class SkillViewCom extends CCComp { @property({ type: Number }) ReadyTime: number = 0; @property({ type: Number }) - postion_y: number = 0; + ready_y: number = 0; + @property({ type: Number }) + atk_x: number = 0; + @property({ type: Number }) + atk_y: number = 0; + endTime: number = 0; + readyFinish: boolean = false; + caster:HeroViewComp=null!; s_uuid:number=0; s_count:number=1; s_interval:number=0.2; s_cd:number=0; - caster:HeroViewComp=null; + scale: number = 0; cName:string=""; target:HeroViewComp=null; parent:Node=null; target_postions:any[]=null + group:0 + fac: 0 // 战斗相关运行时数据 ap:number=0; burn_count:number=0; @@ -53,20 +63,13 @@ export class SkillViewCom extends CCComp { targetPos:any[]=null start() { // var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象 - this.cName = this.caster.hero_name this.node.getChildByName("ready").active = this.hasReady } protected update(dt: number): void { this.doTimer(dt) this.move(dt) this.doEnd(dt) - if(this.hasReady) { - if(this.ReadyTime <= 0) { - this.doAtk(dt) - } - }{ - this.doAtk(dt) - } + if(this.readyFinish) this.doAtk(dt) } doEnd(dt: number) { this.endTime += dt @@ -76,7 +79,8 @@ export class SkillViewCom extends CCComp { } doTimer(dt: number){ - if(this.ReadyTime > 0&&this.hasReady) this.ReadyTime -= dt + if(this.ReadyTime > 0) this.ReadyTime -= dt + if(this.ReadyTime <=0) this.readyFinish=true } doAtk(dt:number): void { // console.log(`${this.cName}_[SkillViewCom] doAtkC`) @@ -88,37 +92,46 @@ export class SkillViewCom extends CCComp { if(this.s_cd > 0) this.s_cd -= dt } doSkill(){ - console.log(`${this.cName}_[SkillViewCom] doSkill`,this.atkPrefab) + // console.log(`${this.cName}_[SkillViewCom] doSkill`,this.atkPrefab) if(this.atkPrefab!=null){ let atkNode:Node = instantiate(this.atkPrefab) atkNode.parent = this.node.parent - atkNode.setPosition(this.node.position) + atkNode.setPosition(v3(this.node.position.x + this.atk_x*this.scale, this.node.position.y + this.atk_y)) + // console.log(`${this.cName}_[SkillViewCom] doSkill atkNode`,this.node.position,atkNode.position) let atkCom=atkNode.getComponent(AtkConCom) + // 计算延长后的目标点坐标 + const originalStart = v3(this.node.position.x + this.atk_x, this.node.position.y + this.atk_y); + const originalTarget = v3(this.targetPos[0].x, this.targetPos[0].y + BoxSet.ATK_Y); + const direction = new Vec3(); + Vec3.subtract(direction, originalTarget, originalStart); + const distance = direction.length(); + direction.normalize(); + const extendedTarget = new Vec3(); + Vec3.scaleAndAdd(extendedTarget, originalTarget, direction, 720); Object.assign(atkCom, { - // 核心标识 - s_uuid: this.s_uuid, - // 位置和施法者信息 - startPos: this.node.position, - targetPos: this.targetPos[0], - group: this.caster.box_group, - fac: this.caster.fac, - // 技能数值 - ap: this.caster.Attrs[BuffAttr.AP], - caster: this.caster, - caster_crit: this.caster.Attrs[BuffAttr.CRITICAL], - caster_crit_d: this.caster.Attrs[BuffAttr.CRITICAL_DMG], - puncture: this.caster.Attrs[BuffAttr.PUNCTURE], - puncture_damage: this.caster.Attrs[BuffAttr.PUNCTURE_DMG], - burn_count: this.caster.Attrs[BuffAttr.BURN_COUNT], - burn_value: this.caster.Attrs[BuffAttr.BURN_VALUE], - stun_time: this.caster.Attrs[BuffAttr.STUN_TIME], - stun_ratio: this.caster.Attrs[BuffAttr.STUN_RATIO], - frost_time: this.caster.Attrs[BuffAttr.FROST_TIME], - frost_ratio: this.caster.Attrs[BuffAttr.FROST_RATIO], - debuff_up: this.caster.Attrs[BuffAttr.DEBUFF_UP], - debuff_value: this.caster.Attrs[BuffAttr.DEBUFF_VALUE], - debuff_count: this.caster.Attrs[BuffAttr.DEBUFF_COUNT], - }); + // 核心标识 + s_uuid: this.s_uuid, + // 位置和施法者信息 + startPos: originalStart, + targetPos: extendedTarget, + group: this.group, + fac: this.fac, + // 技能数值 + ap: this.ap, + caster_crit: this.caster_crit, + caster_crit_d: this.caster_crit_d, + puncture: this.puncture, + puncture_damage: this.puncture_damage, + burn_count: this.burn_count, + burn_value: this.burn_value, + stun_time: this.stun_time, + stun_ratio: this.stun_ratio, + frost_time: this.frost_time, + frost_ratio: this.frost_ratio, + debuff_up: this.debuff_up, + debuff_value: this.debuff_value, + debuff_count: this.debuff_count, + }); switch(this.runType){ case RType.linear: this.do_linear(atkNode) @@ -133,10 +146,12 @@ export class SkillViewCom extends CCComp { } } do_linear(atkNode:any): void { - console.log(`${this.cName}_[SkillViewCom] skille run type: linear`) + console.log(`${this.cName}_[SkillViewCom] skille run type: linear`,this.node.position,atkNode.position) + atkNode.getComponent(AtkConCom).do_line() } do_bezier(atkNode:any): void { console.log(`${this.cName}_[SkillViewCom] skille run type: bezier`) + atkNode.getComponent(AtkConCom).do_parabolic() } do_fixed(atkNode:any): void { console.log(`${this.cName}_[SkillViewCom] skille run type: fixed`) @@ -145,8 +160,8 @@ export class SkillViewCom extends CCComp { move(dt: number): void { // console.log(`${this.cName}_[SkillViewCom] move`) - if(this.caster != null&&this.caster.node!=null) this.node.setPosition(this.caster.node.position.x,this.caster.node.position.y+this.postion_y) - // console.log(`${this.cName}_[skillview]move`,this.caster.node.position,this.node.position) + if(this.caster != null&&this.caster.node!=null) this.node.setPosition(this.caster.node.position.x,this.caster.node.position.y+this.ready_y) + // console.log(`${this.cName}_[skillview]move`,this.caster.node.position,this.node.position) } reset() { this.node.destroy();