From cd6675652b3c07120fbfd503d567350f1b2802eb Mon Sep 17 00:00:00 2001 From: panw Date: Fri, 8 Aug 2025 15:48:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9B=BE=E6=8A=80=E8=83=BD,?= =?UTF-8?q?=20=E7=9B=BE=E5=9B=BE=E7=89=87=E8=B5=84=E6=BA=90=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/resources/game/heros/k3.prefab | 173 +++--- assets/resources/game/skills/anm/atk01.anim | 13 +- assets/resources/game/skills/anm/to_dun.anim | 507 ++++++++++++++++++ .../game/skills/anm/to_dun.anim.meta | 13 + assets/resources/game/skills/atk1.prefab | 122 ++++- assets/resources/game/skills/atk2.prefab | 23 +- .../resources/game/skills/buff/shielded.anim | 41 +- assets/resources/game/skills/shield.prefab | 262 +++++++-- assets/resources/game/skills/shielded.prefab | 16 +- assets/script/Main.ts | 4 +- assets/script/game/common/config/SkillSet.ts | 58 +- assets/script/game/hero/SkillConComp.ts | 1 + assets/script/game/skills/SkillCom-001.ts | 338 ++++++++++++ .../script/game/skills/SkillCom-001.ts.meta | 1 + assets/script/game/skills/SkillCom.ts | 136 ++--- assets/script/game/skills/com.meta | 9 + assets/script/game/skills/com/AtkCom.ts | 29 + assets/script/game/skills/com/AtkCom.ts.meta | 9 + 18 files changed, 1458 insertions(+), 297 deletions(-) create mode 100644 assets/resources/game/skills/anm/to_dun.anim create mode 100644 assets/resources/game/skills/anm/to_dun.anim.meta create mode 100644 assets/script/game/skills/SkillCom-001.ts create mode 100644 assets/script/game/skills/SkillCom-001.ts.meta create mode 100644 assets/script/game/skills/com.meta create mode 100644 assets/script/game/skills/com/AtkCom.ts create mode 100644 assets/script/game/skills/com/AtkCom.ts.meta diff --git a/assets/resources/game/heros/k3.prefab b/assets/resources/game/heros/k3.prefab index 3ee1f5d2..b02bc759 100644 --- a/assets/resources/game/heros/k3.prefab +++ b/assets/resources/game/heros/k3.prefab @@ -31,47 +31,47 @@ "__id__": 28 }, { - "__id__": 40 + "__id__": 41 }, { - "__id__": 51 + "__id__": 52 }, { - "__id__": 60 + "__id__": 61 }, { - "__id__": 69 + "__id__": 70 } ], "_active": true, "_components": [ { - "__id__": 77 + "__id__": 78 }, { - "__id__": 79 + "__id__": 80 }, { - "__id__": 81 + "__id__": 82 }, { - "__id__": 83 + "__id__": 84 }, { - "__id__": 85 + "__id__": 86 }, { - "__id__": 87 + "__id__": 88 }, { - "__id__": 89 + "__id__": 90 }, { - "__id__": 91 + "__id__": 92 } ], "_prefab": { - "__id__": 93 + "__id__": 94 }, "_lpos": { "__type__": "cc.Vec3", @@ -564,6 +564,9 @@ }, { "__id__": 39 + }, + { + "__id__": 40 } ], "removedComponents": [] @@ -594,8 +597,8 @@ ], "value": { "__type__": "cc.Vec3", - "x": -0.057, - "y": -39.46, + "x": 0, + "y": -41, "z": 0 } }, @@ -670,11 +673,25 @@ ], "value": { "__type__": "cc.Vec3", - "x": 1.2, - "y": 1.1, + "x": 1.4, + "y": 1.4, "z": 1 } }, + { + "__type__": "CCPropertyOverrideInfo", + "targetInfo": { + "__id__": 38 + }, + "propertyPath": [ + "_anchorPoint" + ], + "value": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0 + } + }, { "__type__": "cc.Node", "_objFlags": 0, @@ -682,14 +699,14 @@ "__id__": 1 }, "_prefab": { - "__id__": 41 + "__id__": 42 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 40 + "__id__": 41 }, "asset": { "__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c", @@ -697,7 +714,7 @@ }, "fileId": "5fqU0L3/FOhKaco5UkHuWT", "instance": { - "__id__": 42 + "__id__": 43 }, "targetOverrides": null }, @@ -711,10 +728,7 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 43 - }, - { - "__id__": 45 + "__id__": 44 }, { "__id__": 46 @@ -726,7 +740,10 @@ "__id__": 48 }, { - "__id__": 50 + "__id__": 49 + }, + { + "__id__": 51 } ], "removedComponents": [] @@ -734,7 +751,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 44 + "__id__": 45 }, "propertyPath": [ "_name" @@ -750,7 +767,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 44 + "__id__": 45 }, "propertyPath": [ "_lpos" @@ -765,7 +782,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 44 + "__id__": 45 }, "propertyPath": [ "_lrot" @@ -781,7 +798,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 44 + "__id__": 45 }, "propertyPath": [ "_euler" @@ -796,7 +813,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 49 + "__id__": 50 }, "propertyPath": [ "_lpos" @@ -817,7 +834,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 44 + "__id__": 45 }, "propertyPath": [ "_lscale" @@ -836,14 +853,14 @@ "__id__": 1 }, "_prefab": { - "__id__": 52 + "__id__": 53 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 51 + "__id__": 52 }, "asset": { "__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90", @@ -851,7 +868,7 @@ }, "fileId": "0d6ZXmA5dHkZxoGONDL2sE", "instance": { - "__id__": 53 + "__id__": 54 }, "targetOverrides": null }, @@ -865,10 +882,7 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 54 - }, - { - "__id__": 56 + "__id__": 55 }, { "__id__": 57 @@ -878,6 +892,9 @@ }, { "__id__": 59 + }, + { + "__id__": 60 } ], "removedComponents": [] @@ -885,7 +902,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 55 + "__id__": 56 }, "propertyPath": [ "_name" @@ -901,7 +918,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 55 + "__id__": 56 }, "propertyPath": [ "_lpos" @@ -916,7 +933,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 55 + "__id__": 56 }, "propertyPath": [ "_lrot" @@ -932,7 +949,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 55 + "__id__": 56 }, "propertyPath": [ "_euler" @@ -947,7 +964,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 55 + "__id__": 56 }, "propertyPath": [ "_active" @@ -961,14 +978,14 @@ "__id__": 1 }, "_prefab": { - "__id__": 61 + "__id__": 62 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 60 + "__id__": 61 }, "asset": { "__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338", @@ -976,7 +993,7 @@ }, "fileId": "91yoyAQGNDm5ziI7NUChZ+", "instance": { - "__id__": 62 + "__id__": 63 }, "targetOverrides": null }, @@ -990,10 +1007,7 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 63 - }, - { - "__id__": 65 + "__id__": 64 }, { "__id__": 66 @@ -1003,6 +1017,9 @@ }, { "__id__": 68 + }, + { + "__id__": 69 } ], "removedComponents": [] @@ -1010,7 +1027,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 64 + "__id__": 65 }, "propertyPath": [ "_name" @@ -1026,7 +1043,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 64 + "__id__": 65 }, "propertyPath": [ "_lpos" @@ -1041,7 +1058,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 64 + "__id__": 65 }, "propertyPath": [ "_lrot" @@ -1057,7 +1074,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 64 + "__id__": 65 }, "propertyPath": [ "_euler" @@ -1072,7 +1089,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 64 + "__id__": 65 }, "propertyPath": [ "_active" @@ -1086,14 +1103,14 @@ "__id__": 1 }, "_prefab": { - "__id__": 70 + "__id__": 71 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 69 + "__id__": 70 }, "asset": { "__uuid__": "afb84e4d-b478-4ab6-8f14-4f69d7a2c57f", @@ -1101,7 +1118,7 @@ }, "fileId": "733PKzwANLyJWD2ume4u5f", "instance": { - "__id__": 71 + "__id__": 72 }, "targetOverrides": null }, @@ -1115,16 +1132,16 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 72 - }, - { - "__id__": 74 + "__id__": 73 }, { "__id__": 75 }, { "__id__": 76 + }, + { + "__id__": 77 } ], "removedComponents": [] @@ -1132,7 +1149,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 73 + "__id__": 74 }, "propertyPath": [ "_name" @@ -1148,7 +1165,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 73 + "__id__": 74 }, "propertyPath": [ "_lpos" @@ -1163,7 +1180,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 73 + "__id__": 74 }, "propertyPath": [ "_lrot" @@ -1179,7 +1196,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 73 + "__id__": 74 }, "propertyPath": [ "_euler" @@ -1201,7 +1218,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 78 + "__id__": 79 }, "_contentSize": { "__type__": "cc.Size", @@ -1229,7 +1246,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 80 + "__id__": 81 }, "anm": { "__id__": 25 @@ -1250,7 +1267,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 82 + "__id__": 83 }, "_id": "" }, @@ -1268,7 +1285,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 84 + "__id__": 85 }, "_id": "" }, @@ -1286,7 +1303,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 86 + "__id__": 87 }, "enabledContactListener": true, "bullet": false, @@ -1320,7 +1337,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 88 + "__id__": 89 }, "tag": 0, "_group": 4, @@ -1354,7 +1371,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 90 + "__id__": 91 }, "_id": "" }, @@ -1372,7 +1389,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 92 + "__id__": 93 }, "_id": "" }, @@ -1393,16 +1410,16 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": [ { - "__id__": 69 + "__id__": 70 }, { - "__id__": 60 + "__id__": 61 }, { - "__id__": 51 + "__id__": 52 }, { - "__id__": 40 + "__id__": 41 }, { "__id__": 28 diff --git a/assets/resources/game/skills/anm/atk01.anim b/assets/resources/game/skills/anm/atk01.anim index 93829357..6c170e24 100644 --- a/assets/resources/game/skills/anm/atk01.anim +++ b/assets/resources/game/skills/anm/atk01.anim @@ -22,7 +22,18 @@ } ], "_exoticAnimation": null, - "_events": [], + "_events": [ + { + "frame": 0.03333333333333333, + "func": "", + "params": [] + }, + { + "frame": 0.03333333333333333, + "func": "atk", + "params": [] + } + ], "_embeddedPlayers": [], "_additiveSettings": { "__id__": 24 diff --git a/assets/resources/game/skills/anm/to_dun.anim b/assets/resources/game/skills/anm/to_dun.anim new file mode 100644 index 00000000..1c1e473e --- /dev/null +++ b/assets/resources/game/skills/anm/to_dun.anim @@ -0,0 +1,507 @@ +[ + { + "__type__": "cc.AnimationClip", + "_name": "to_dun", + "_objFlags": 0, + "__editorExtras__": { + "embeddedPlayerGroups": [] + }, + "_native": "", + "sample": 24, + "speed": 1, + "wrapMode": 1, + "enableTrsBlending": false, + "_duration": 0.2916666666666667, + "_hash": 500763545, + "_tracks": [ + { + "__id__": 1 + }, + { + "__id__": 12 + } + ], + "_exoticAnimation": null, + "_events": [], + "_embeddedPlayers": [], + "_additiveSettings": { + "__id__": 24 + }, + "_auxiliaryCurveEntries": [] + }, + { + "__type__": "cc.animation.VectorTrack", + "_binding": { + "__type__": "cc.animation.TrackBinding", + "path": { + "__id__": 2 + }, + "proxy": null + }, + "_channels": [ + { + "__id__": 4 + }, + { + "__id__": 6 + }, + { + "__id__": 8 + }, + { + "__id__": 10 + } + ], + "_nComponents": 3 + }, + { + "__type__": "cc.animation.TrackPath", + "_paths": [ + { + "__id__": 3 + }, + "scale" + ] + }, + { + "__type__": "cc.animation.HierarchyPath", + "path": "skill/dun" + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 5 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 0, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 0.8999999761581421, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 7 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 9 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 1, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 11 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [], + "_values": [], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.ColorTrack", + "_binding": { + "__type__": "cc.animation.TrackBinding", + "path": { + "__id__": 13 + }, + "proxy": null + }, + "_channels": [ + { + "__id__": 16 + }, + { + "__id__": 18 + }, + { + "__id__": 20 + }, + { + "__id__": 22 + } + ] + }, + { + "__type__": "cc.animation.TrackPath", + "_paths": [ + { + "__id__": 14 + }, + { + "__id__": 15 + }, + "color" + ] + }, + { + "__type__": "cc.animation.HierarchyPath", + "path": "skill/dun" + }, + { + "__type__": "cc.animation.ComponentPath", + "component": "cc.Sprite" + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 17 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25, + 0.2916666567325592 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 19 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25, + 0.2916666567325592 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 21 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25, + 0.2916666567325592 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 19, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 19, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 19, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.animation.Channel", + "_curve": { + "__id__": 23 + } + }, + { + "__type__": "cc.RealCurve", + "_times": [ + 0, + 0.25, + 0.2916666567325592 + ], + "_values": [ + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 255, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + }, + { + "__type__": "cc.RealKeyframeValue", + "interpolationMode": 0, + "tangentWeightMode": 0, + "value": 0, + "rightTangent": 0, + "rightTangentWeight": 1, + "leftTangent": 0, + "leftTangentWeight": 1, + "easingMethod": 0, + "__editorExtras__": { + "tangentMode": 0 + } + } + ], + "preExtrapolation": 1, + "postExtrapolation": 1 + }, + { + "__type__": "cc.AnimationClipAdditiveSettings", + "enabled": false, + "refClip": null + } +] \ No newline at end of file diff --git a/assets/resources/game/skills/anm/to_dun.anim.meta b/assets/resources/game/skills/anm/to_dun.anim.meta new file mode 100644 index 00000000..fd39e6db --- /dev/null +++ b/assets/resources/game/skills/anm/to_dun.anim.meta @@ -0,0 +1,13 @@ +{ + "ver": "2.0.3", + "importer": "animation-clip", + "imported": true, + "uuid": "5ec0664a-f8e6-4d50-98af-6ffa3d530ae3", + "files": [ + ".cconb" + ], + "subMetas": {}, + "userData": { + "name": "to_dun" + } +} diff --git a/assets/resources/game/skills/atk1.prefab b/assets/resources/game/skills/atk1.prefab index e8630c89..a00879d8 100644 --- a/assets/resources/game/skills/atk1.prefab +++ b/assets/resources/game/skills/atk1.prefab @@ -20,22 +20,28 @@ "_children": [ { "__id__": 2 + }, + { + "__id__": 12 } ], "_active": true, "_components": [ - { - "__id__": 12 - }, - { - "__id__": 14 - }, { "__id__": 16 + }, + { + "__id__": 18 + }, + { + "__id__": 20 + }, + { + "__id__": 22 } ], "_prefab": { - "__id__": 18 + "__id__": 24 }, "_lpos": { "__type__": "cc.Vec3", @@ -276,6 +282,84 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, + { + "__type__": "cc.Node", + "_name": "AtkCom", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 1 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 13 + } + ], + "_prefab": { + "__id__": 15 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "b1d8e1ZA0dLtqufhidnFK/K", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 12 + }, + "_enabled": true, + "__prefab": { + "__id__": 14 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "a9mRcuGlBKd6ewHUKzQclF" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "29igegDtpC5pnuDb8lf652", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, { "__type__": "cc.UITransform", "_name": "", @@ -286,7 +370,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 13 + "__id__": 17 }, "_contentSize": { "__type__": "cc.Size", @@ -314,7 +398,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 15 + "__id__": 19 }, "_id": "" }, @@ -332,7 +416,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 17 + "__id__": 21 }, "playOnLoad": true, "_clips": [ @@ -352,6 +436,24 @@ "__type__": "cc.CompPrefabInfo", "fileId": "c2RDvksalG2acL3tyGCY0t" }, + { + "__type__": "b1d8e1ZA0dLtqufhidnFK/K", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 23 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "6f9YyS6nFCzY07u1RYhIQa" + }, { "__type__": "cc.PrefabInfo", "root": { diff --git a/assets/resources/game/skills/atk2.prefab b/assets/resources/game/skills/atk2.prefab index f1c25230..bcbc391c 100644 --- a/assets/resources/game/skills/atk2.prefab +++ b/assets/resources/game/skills/atk2.prefab @@ -32,10 +32,13 @@ }, { "__id__": 16 + }, + { + "__id__": 18 } ], "_prefab": { - "__id__": 18 + "__id__": 20 }, "_lpos": { "__type__": "cc.Vec3", @@ -352,6 +355,24 @@ "__type__": "cc.CompPrefabInfo", "fileId": "c2RDvksalG2acL3tyGCY0t" }, + { + "__type__": "b1d8e1ZA0dLtqufhidnFK/K", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 1 + }, + "_enabled": true, + "__prefab": { + "__id__": 19 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "43TGZhxTROHqjaNE4JoR4B" + }, { "__type__": "cc.PrefabInfo", "root": { diff --git a/assets/resources/game/skills/buff/shielded.anim b/assets/resources/game/skills/buff/shielded.anim index ecb27a9f..cdc3cc14 100644 --- a/assets/resources/game/skills/buff/shielded.anim +++ b/assets/resources/game/skills/buff/shielded.anim @@ -11,7 +11,7 @@ "speed": 1, "wrapMode": 2, "enableTrsBlending": false, - "_duration": 0.8333333333333334, + "_duration": 0.5833333333333334, "_hash": 500763545, "_tracks": [ { @@ -22,7 +22,7 @@ "_events": [], "_embeddedPlayers": [], "_additiveSettings": { - "__id__": 11 + "__id__": 12 }, "_auxiliaryCurveEntries": [] }, @@ -37,16 +37,16 @@ }, "_channels": [ { - "__id__": 3 + "__id__": 4 }, { - "__id__": 5 + "__id__": 6 }, { - "__id__": 7 + "__id__": 8 }, { - "__id__": 9 + "__id__": 10 } ], "_nComponents": 3 @@ -54,21 +54,28 @@ { "__type__": "cc.animation.TrackPath", "_paths": [ + { + "__id__": 3 + }, "scale" ] }, + { + "__type__": "cc.animation.HierarchyPath", + "path": "skill/dun" + }, { "__type__": "cc.animation.Channel", "_curve": { - "__id__": 4 + "__id__": 5 } }, { "__type__": "cc.RealCurve", "_times": [ 0, - 0.4166666567325592, - 0.8333333134651184 + 0.2916666567325592, + 0.5833333134651184 ], "_values": [ { @@ -114,15 +121,15 @@ { "__type__": "cc.animation.Channel", "_curve": { - "__id__": 6 + "__id__": 7 } }, { "__type__": "cc.RealCurve", "_times": [ 0, - 0.4166666567325592, - 0.8333333134651184 + 0.2916666567325592, + 0.5833333134651184 ], "_values": [ { @@ -141,7 +148,7 @@ "__type__": "cc.RealKeyframeValue", "interpolationMode": 0, "tangentWeightMode": 0, - "value": 1.100000023841858, + "value": 1.2000000476837158, "rightTangent": 0, "rightTangentWeight": 1, "leftTangent": 0, @@ -168,15 +175,15 @@ { "__type__": "cc.animation.Channel", "_curve": { - "__id__": 8 + "__id__": 9 } }, { "__type__": "cc.RealCurve", "_times": [ 0, - 0.4166666567325592, - 0.8333333134651184 + 0.2916666567325592, + 0.5833333134651184 ], "_values": [ { @@ -222,7 +229,7 @@ { "__type__": "cc.animation.Channel", "_curve": { - "__id__": 10 + "__id__": 11 } }, { diff --git a/assets/resources/game/skills/shield.prefab b/assets/resources/game/skills/shield.prefab index 2f30c618..1d7dbe69 100644 --- a/assets/resources/game/skills/shield.prefab +++ b/assets/resources/game/skills/shield.prefab @@ -25,25 +25,22 @@ "_active": true, "_components": [ { - "__id__": 6 + "__id__": 14 }, { - "__id__": 8 + "__id__": 16 }, { - "__id__": 10 - }, - { - "__id__": 12 + "__id__": 18 } ], "_prefab": { - "__id__": 14 + "__id__": 20 }, "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": 0, + "y": -91, "z": 0 }, "_lrot": { @@ -55,8 +52,8 @@ }, "_lscale": { "__type__": "cc.Vec3", - "x": 1, - "y": 1, + "x": 1.4, + "y": 1.4, "z": 1 }, "_mobility": 0, @@ -77,15 +74,72 @@ "_parent": { "__id__": 1 }, - "_children": [], - "_active": true, - "_components": [ + "_children": [ { "__id__": 3 } ], + "_active": true, + "_components": [ + { + "__id__": 9 + }, + { + "__id__": 11 + } + ], "_prefab": { - "__id__": 5 + "__id__": 13 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 0, + "y": -15, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "dun", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 2 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 4 + }, + { + "__id__": 6 + } + ], + "_prefab": { + "__id__": 8 }, "_lpos": { "__type__": "cc.Vec3", @@ -103,11 +157,11 @@ "_lscale": { "__type__": "cc.Vec3", "x": 1, - "y": 1, + "y": 1.1, "z": 1 }, "_mobility": 0, - "_layer": 1073741824, + "_layer": 1, "_euler": { "__type__": "cc.Vec3", "x": 0, @@ -122,27 +176,72 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 2 + "__id__": 3 }, "_enabled": true, "__prefab": { - "__id__": 4 + "__id__": 5 }, "_contentSize": { "__type__": "cc.Size", - "width": 48, - "height": 48 + "width": 86, + "height": 84 }, "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, - "y": 0.5 + "y": 0 }, "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "b4sNQPJWFKha7x75SWXmRj" + "fileId": "e2qx7yL4NAL7+etGXqzyB5" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 3 + }, + "_enabled": true, + "__prefab": { + "__id__": 7 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 245, + "b": 0, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "45af5702-7585-4d72-85cf-d7b8da02d832@bbb42", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "4fqUTuxMdJ8ZH/L993I9oX" }, { "__type__": "cc.PrefabInfo", @@ -152,7 +251,90 @@ "asset": { "__id__": 0 }, - "fileId": "7a5LvbdlxEc6FKa7cun2oB", + "fileId": "5fa3k2fjdMaoZhAnWHpW+B", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": true, + "__prefab": { + "__id__": 10 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 80, + "height": 100 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "ffMAkaUpFI57IBOmyAqRb7" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 2 + }, + "_enabled": false, + "__prefab": { + "__id__": 12 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 206 + }, + "_spriteFrame": null, + "_type": 3, + "_fillType": 1, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0.2, + "_fillRange": 1, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "9fHw3j4KRHy69YivdVDz8y" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e0t/T+P9lKKplNd52LexfO", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -167,7 +349,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 7 + "__id__": 15 }, "_contentSize": { "__type__": "cc.Size", @@ -176,8 +358,8 @@ }, "_anchorPoint": { "__type__": "cc.Vec2", - "x": 0.49664333316829656, - "y": 0.5156666649712457 + "x": 0.5, + "y": 0 }, "_id": "" }, @@ -195,7 +377,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 9 + "__id__": 17 }, "_id": "" }, @@ -213,42 +395,24 @@ }, "_enabled": true, "__prefab": { - "__id__": 11 + "__id__": 19 }, "playOnLoad": true, "_clips": [ { - "__uuid__": "2202bddf-38fc-4b0e-a004-ef962f61f49d", + "__uuid__": "5ec0664a-f8e6-4d50-98af-6ffa3d530ae3", "__expectedType__": "cc.AnimationClip" } ], "_defaultClip": { - "__uuid__": "2202bddf-38fc-4b0e-a004-ef962f61f49d", + "__uuid__": "5ec0664a-f8e6-4d50-98af-6ffa3d530ae3", "__expectedType__": "cc.AnimationClip" }, "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "7cJdSTCj5Eu4vDiD6FPj8P" - }, - { - "__type__": "9e0d3yayihFMKm6st+kCG3D", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 1 - }, - "_enabled": false, - "__prefab": { - "__id__": 13 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "d9m8Z9r0FAn79RIXwYOlkG" + "fileId": "fekMKpI+NOpKIKl1FWNHvQ" }, { "__type__": "cc.PrefabInfo", diff --git a/assets/resources/game/skills/shielded.prefab b/assets/resources/game/skills/shielded.prefab index d53f4287..bdf7efbf 100644 --- a/assets/resources/game/skills/shielded.prefab +++ b/assets/resources/game/skills/shielded.prefab @@ -49,8 +49,8 @@ }, "_lscale": { "__type__": "cc.Vec3", - "x": 1, - "y": 1, + "x": 1.4, + "y": 1.4, "z": 1 }, "_mobility": 0, @@ -141,7 +141,7 @@ "_lpos": { "__type__": "cc.Vec3", "x": 0, - "y": 57.141, + "y": 0, "z": 0 }, "_lrot": { @@ -153,8 +153,8 @@ }, "_lscale": { "__type__": "cc.Vec3", - "x": 0.9, - "y": 1, + "x": 1, + "y": 1.1, "z": 1 }, "_mobility": 0, @@ -187,7 +187,7 @@ "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, - "y": 0.5 + "y": 0 }, "_id": "" }, @@ -223,7 +223,7 @@ }, "_type": 0, "_fillType": 0, - "_sizeMode": 1, + "_sizeMode": 0, "_fillCenter": { "__type__": "cc.Vec2", "x": 0, @@ -355,7 +355,7 @@ }, "_anchorPoint": { "__type__": "cc.Vec2", - "x": 0.49664333316829656, + "x": 0.5, "y": 0 }, "_id": "" diff --git a/assets/script/Main.ts b/assets/script/Main.ts index b582c586..2a2cab84 100644 --- a/assets/script/Main.ts +++ b/assets/script/Main.ts @@ -14,8 +14,8 @@ const { ccclass, property } = _decorator; @ccclass('Main') export class Main extends Root { start() { - // PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb | - // EPhysics2DDrawFlags.Pair | + PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb | + EPhysics2DDrawFlags.Pair // EPhysics2DDrawFlags.CenterOfMass | // EPhysics2DDrawFlags.Joint | // EPhysics2DDrawFlags.Shape; diff --git a/assets/script/game/common/config/SkillSet.ts b/assets/script/game/common/config/SkillSet.ts index 14294bbf..3d986de2 100644 --- a/assets/script/game/common/config/SkillSet.ts +++ b/assets/script/game/common/config/SkillSet.ts @@ -231,101 +231,101 @@ export const getSkills=(quality:number)=>{ } export const SkillSet = { 6001:{uuid:6001,name:"剑气",for_hero:false,sp_name:"atk_1",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"}, 6002:{uuid:6002,name:"冰球",for_hero:false,sp_name:"greenball",path:"3034",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"}, 6003:{uuid:6003,name:"射击",for_hero:false,sp_name:"arrow",path:"3037",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.parabolic,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, - debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"}, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:2,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"}, - 6004:{uuid:6004,name:"护盾",for_hero:true,sp_name:"buff_to",path:"3045",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Team,SType:SType.shield,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.StartEnd,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:0, - debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:10,hit:1,hited:3,buV:2,buC:0,buR:100,speed:720,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"}, + 6004:{uuid:6004,name:"护盾",for_hero:true,sp_name:"shield",path:"3045",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, + TGroup:TGroup.Team,SType:SType.shield,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, + debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit:1,hited:3,buV:2,buC:0,buR:100,speed:720,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"}, 6005:{uuid:6005,name:"治疗", for_hero:true, sp_name:"heath_small",path:"3056",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Team,SType:SType.heal,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.StartEnd,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:0, + TGroup:TGroup.Team,SType:SType.heal,act:"max",DTType:DTType.single,CdType:CdType.cd,AType:AType.StartEnd,EType:EType.timeEnd,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:5,hit:0,hited:0,buV:20,buC:0,buR:100,speed:0,cost:10,info:"回复最前排队友10%最大生命值的生命"}, 6006:{uuid:6006,name:"铁斧打击",for_hero:false,sp_name:"base_ft",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"}, 6007:{uuid:6007,name:"木棍打击",for_hero:false,sp_name:"base_mg",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出木棍,造成100%攻击的伤害"}, 6008:{uuid:6008,name:"飞刀打击",for_hero:false,sp_name:"base_sf",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出飞刀,造成100%攻击的伤害"}, 6009:{uuid:6009,name:"石斧打击",for_hero:false,sp_name:"base_sf",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, 6010:{uuid:6010,name:"攻击",for_hero:false,sp_name:"atk1",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,RType:RType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, 6011:{uuid:6011,name:"攻击",for_hero:false,sp_name:"atk2",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,RType:RType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, 6020:{uuid:6020,name:"烈焰斩击",for_hero:false,sp_name:"max_fireatk",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,RType:RType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:0, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max",flash:false,with:0, debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:0.2,buV:0,buC:0,buR:100,speed:720,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"}, 6021:{uuid:6021,name:"烈火护盾",for_hero:true,sp_name:"max_firedun",path:"3061",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedStart,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedStart,EType:EType.timeEnd,fname:"max",flash:false,with:90, debuff:0,deV:0,deC:0,deR:100,in:10,ap:100,cd:5,hit:1,hited:1,buV:0,buC:0,buR:100,speed:80,cost:10,info:"召唤烈焰保护英雄,持续10秒,每秒对范围内的敌人造成100%伤害"}, 6022:{uuid:6022,name:"火球术" ,for_hero:true,sp_name:"fire",path:"3039",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, debuff:DebuffAttr.STUN,deV:0,deC:1,deR:50,in:1,ap:100,cd:5,hit:2,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧"}, 6023:{uuid:6023,name:"龙卷风",for_hero:true, sp_name:"bwind",path:"3065",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"}, 6024:{uuid:6024,name:"寒冰箭",for_hero:true, sp_name:"arrow_blue",path:"3060",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.cd,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, debuff:DebuffAttr.FROST,deV:1,deC:0,deR:100,in:1,ap:100,cd:1,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"}, 6025:{uuid:6025,name:"烈焰射击",for_hero:false,sp_name:"arrow_yellow",path:"3014",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, debuff:DebuffAttr.STUN,deV:0.5,deC:0,deR:50,in:1,ap:100,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率眩晕敌人"}, 6026:{uuid:6026,name:"火墙", for_hero:true, sp_name:"firewall",path:"3040",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.fixedEnd,EType:EType.timeEnd,fname:"max",flash:false,with:90, debuff:0,deV:0,deC:0,deR:100,in:10,ap:50,cd:5,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤一堵火墙,持续10秒,每秒造成50%攻击伤害"}, 6027:{uuid:6027,name:"冰刺",for_hero:true,sp_name:"icez",path:"3049",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:DebuffAttr.FROST,deV:0,deC:0,deR:100,in:1,ap:300,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰刺攻击敌人,造成200%攻击的伤害,20%几率冰冻敌人"}, 6028:{uuid:6028,name:"潮汐", for_hero:true, sp_name:"watert",path:"3070",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:3,ap:100,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"}, 6029:{uuid:6029,name:"陨石术",for_hero:true, sp_name:"max_yunshi",path:"3123",quality:Quality.BLUE, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:0,deV:0,deC:0,deR:100,in:3,ap:500,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"}, 6030:{uuid:6030,name:"冰墙", for_hero:false, sp_name:"icet",path:"3050",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.linear,RType:RType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.cd,AType:AType.linear,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:100,in:1,ap:400,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤冰墙攻击敌人,造成200%攻击的伤害,50%几率击退敌人"}, //召唤取消 // 6031:{uuid:6031,name:"召唤骷髅",for_hero:true,sp_name:"zhaohuan",path:"3018",quality:Quality.GREEN, TType:TType.Frontline,maxC:1, - // TGroup:TGroup.Self,SType:SType.zhaohuan,act:"max",DTType:DTType.single,CdType:CdType.power,AType:AType.fixedStart,RType:RType.fixed,EType:EType.animationEnd,fname:"max_blue",flash:true,with:90, + // TGroup:TGroup.Self,SType:SType.zhaohuan,act:"max",DTType:DTType.single,CdType:CdType.power,AType:AType.fixedStart,EType:EType.animationEnd,fname:"max_blue",flash:true,with:90, // debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:70,cd:60,hit:1,hited:1,buV:0,buC:0,buR:100,speed:720,hero:5221,cost:10,info:"召唤一个骷髅战士为我方而战"}, 6032:{uuid:6032,name:"陨石风暴",for_hero:true, sp_name:"fireys",path:"3101",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:0,deV:0,deC:0,deR:50,in:3,ap:500,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"在最前方敌人位置,召唤陨石攻击敌人,造成500%攻击的伤害"}, 6033:{uuid:6033,name:"龙卷风爆",for_hero:true, sp_name:"bwind",path:"3069",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.linear,EType:EType.collision,fname:"max",flash:false,with:90, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit:1,hited:1,buV:0,buC:0,buR:100,speed:360,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,50%几率击退敌人"}, 6034:{uuid:6034,name:"大潮汐", for_hero:true, sp_name:"watert",path:"3070",quality:Quality.PURPLE, TType:TType.Frontline,maxC:5, - TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,RType:RType.fixed,EType:EType.animationEnd,fname:"max",flash:false,with:90, + TGroup:TGroup.Ally,SType:SType.damage,act:"atk",DTType:DTType.range,CdType:CdType.power,AType:AType.fixedEnd,EType:EType.animationEnd,fname:"max",flash:false,with:90, debuff:DebuffAttr.BACK,deV:0,deC:0,deR:50,in:3,ap:100,cd:5,hit:1,hited:0.3,buV:0,buC:0,buR:100,speed:720,cost:10,info:"召唤水柱攻击敌人,每秒造成100%攻击的伤害,50%几率击退敌人"}, }; \ No newline at end of file diff --git a/assets/script/game/hero/SkillConComp.ts b/assets/script/game/hero/SkillConComp.ts index 5343ec14..b733bbc1 100644 --- a/assets/script/game/hero/SkillConComp.ts +++ b/assets/script/game/hero/SkillConComp.ts @@ -323,6 +323,7 @@ export class SkillConComp extends CCComp { onDestroy() { // 清理所有定时器 + console.log("[SkillConComp]:onDestroy:",this.node.name) Object.values(this._timers).forEach(clearTimeout); this._timers = {}; // 移除事件监听 diff --git a/assets/script/game/skills/SkillCom-001.ts b/assets/script/game/skills/SkillCom-001.ts new file mode 100644 index 00000000..2897f1d5 --- /dev/null +++ b/assets/script/game/skills/SkillCom-001.ts @@ -0,0 +1,338 @@ +import { _decorator,Collider2D ,Contact2DType,v3,IPhysics2DContact,Vec3, tween, math, RigidBody2D, Animation, sp, Tween} 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 { smc } from "../common/SingletonModuleComp"; +import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; +import { GameEvent } from "../common/config/GameEvent"; +import { AType, DTType, EType, RType, SkillSet, SType, TGroup } from "../common/config/SkillSet"; +import { BoxSet, FacSet } from "../common/config/BoxSet"; +import { HeroViewComp } from "../hero/HeroViewComp"; +import { BezierMove } from "../BezierMove/BezierMove"; +import { MonModelComp } from "../hero/MonModelComp"; +import { FightSet } from "../common/config/Mission"; +import { HeroModelComp } from "../hero/HeroModelComp"; +import { Skill } from "./Skill"; + + +const { ccclass, property } = _decorator; + +/** 视图层对象 */ +@ccclass('SkillCom') +@ecs.register('SkillCom') +export class SkillCom extends CCComp { + s_uuid:number = 0; + s_name:string = ""; + hero:number = 0; + speed:number = 200; + scale:number = 1; + angle:number = 0; + atk_count:number = 0; + is_destroy:boolean = false; + enemys:any = []; + AType: number = 0; // 运动类型 + startPos: Vec3 = v3(); // 起始位置 + targetPos: Vec3 = v3(); // 目标位置 + duration: number = 0; // 技能持续时间 + prefabName: string = ""; // 预制体名称 + animName: string = ""; + group:number = 0; //阵营 + fac:number=0; //阵营 + caster:any=null; + distance_x:number=0; + distance_y:number=0; + ap:number=0; + buV:number=0; + buC:number=0; + buR:number=0; + burn_count:number=0; + burn_value:number=0; + stun_time:number=0; + stun_ratto:number=0; + frost_ratto:number=0; + frost_time:number=0; + run_time:number=0; + hited_time:number=0; + hit_count:number=0; + spine:sp.Skeleton=null; + anim:Animation=null; + tweenInstance:Tween = null; + t_end_x:number=0; + caster_crit:number=0; + caster_crit_d:number=0; + puncture:number=0; + puncture_damage:number=0; + EType:any=null + private moveDirection: Vec3 | null = null; // 添加一个属性来存储移动方向 + + protected onLoad(): void { + + } + + start() { + this.EType=SkillSet[this.s_uuid].EType + this.node.setPosition(this.startPos.x,this.startPos.y,0) + if(this.node.getChildByName('anm')){ + this.spine=this.node.getChildByName('anm').getComponent('sp.Skeleton') as sp.Skeleton; + }else{ + this.anim=this.node.getComponent(Animation) + } + this.on(GameEvent.MissionEnd, this.doDestroy, this); + this.node.active = true; + //console.log("[SkillCom]:caster",this.caster) + + + let collider = this.getComponent(Collider2D); + if(collider) { + collider.group = this.group; + collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this); + } + let bm=this.node.getComponent(BezierMove) + // //console.log(this.group +"技能 collider ",collider); + switch(SkillSet[this.s_uuid].AType){ + case AType.parabolic: + this.node.angle +=10 + // bm.speed=700 + if(this.group==BoxSet.MONSTER) {bm.controlPointSide=-1 } + bm.rotationSmoothness=0.6 + bm.moveTo(this.targetPos) + break; + case AType.linear: + 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); + break; + case AType.StartEnd: + // 2段位移:先升高,然后移到目的地 + this.executeTwoStageMovement(); + break; + case AType.fixedEnd: + this.node.setPosition(this.targetPos.x > 360?300:this.targetPos.x,0,0) + if(this.node.getComponent(Animation)){ + let anim = this.node.getComponent(Animation); + //console.log("[SkillCom]:has anim",anim) + anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); + } + if(this.node.getChildByName('anm')){ + if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){ + //console.log("[SkillCom]:has spine",this.spine) + this.spine.setCompleteListener((trackEntry) => { + this.onAnimationFinished() + //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex); + }); + } + } + break; + case AType.fixedStart: // + + this.node.setPosition(this.startPos.x > 360?300:this.startPos.x,0,0) + + if(this.node.getComponent(Animation)){ + let anim = this.node.getComponent(Animation); + //console.log("[SkillCom]:has anim",anim) + anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); + } + if(this.node.getChildByName('anm')){ + if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){ + //console.log("[SkillCom]:has spine",this.spine) + this.spine.setCompleteListener((trackEntry) => { + this.onAnimationFinished() + //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex); + }); + } + } + break; + } + + + } + + onAnimationFinished(){ + console.log("[SkillCom]:onAnimationFinished",this.s_uuid) + if(SkillSet[this.s_uuid].EType==EType.timeEnd) return + this.is_destroy=true + } + //范围伤害 + range_damage(){ + // console.log("[SkillCom]:range_damage",this.s_uuid) + let enemys=ecs.query(ecs.allOf(MonModelComp)) + if(this.fac==FacSet.MON) enemys=ecs.query(ecs.allOf(HeroModelComp)) + enemys.forEach(entity => { + let view=entity.get(HeroViewComp) + if(view){ + let dis_x =Math.abs(this.node.position.x-view.node.position.x) + let dis_y =Math.abs(this.node.position.y-view.node.position.y) + if(dis_x > SkillSet[this.s_uuid].with||dis_y > SkillSet[this.s_uuid].with) return + this.single_damage(view,true) + } + }); + } + //单体伤害 + single_damage(target:HeroViewComp,is_range:boolean=false){ + // //console.log("[SkillCom]:onBeginContact hit_count:",this.hit_count,SkillSet[this.s_uuid].hit) + // if(this.hit_count > 0&&!is_range) this.ap=this.ap*(50+this.puncture_damage)/100 // 穿刺后 伤害减半,过滤范围伤害 + if(target == null) return; + let ap=this.ap + if(this.hit_count > 0 &&!is_range ){ + ap=ap*(50+this.puncture_damage)/100 + } + target.do_atked(ap,this.caster_crit,this.caster_crit_d, + this.burn_count,this.burn_value, + this.stun_time,this.stun_ratto, + this.frost_time,this.frost_ratto) // ap 及暴击 属性已经在skill.ts 处理 + // console.log("[SkillCom]:single_damage t:tp:rtp",this.node.position,this.targetPos,target.node.position) + if(SkillSet[this.s_uuid].debuff>0){ + let debuff=SkillSet[this.s_uuid] + let dev=debuff.deV*(100+this.caster.DEBUFF_VALUE)/100 + let deR=debuff.deR+this.caster.DEBUFF_UP + dev=Math.round(dev*100)/100 + let deC=debuff.deC+this.caster.DEBUFF_COUNT //dec只作为次数叠加 + // //console.log("[SkillCom]:debuff",SkillSet[this.s_uuid].name,debuff.debuff,deUP.deV,deUP.deC) + target.add_debuff(debuff.debuff,dev,deC,deR) + } + this.hit_count++ + // console.log("[SkillCom]:碰撞次数:技能次数:穿刺次数",this.hit_count,SkillSet[this.s_uuid].hit,this.puncture) + if(this.hit_count>=(SkillSet[this.s_uuid].hit+this.puncture)&&(SkillSet[this.s_uuid].DTType!=DTType.range)&&(SkillSet[this.s_uuid].EType!=EType.animationEnd)) this.is_destroy=true // 技能命中次数 + } + + onBeginContact (seCol: Collider2D, oCol: Collider2D) { + // console.log(this.scale+"碰撞开始 ",seCol,oCol); + if(seCol.node.position.x-oCol.node.position.x > 100 ) return + let target = oCol.getComponent(HeroViewComp) + if(oCol.group!=this.group){ + if(target == null) return; + // console.log("[SkillCom]:onBeginContact oCol||seCol",oCol.node.position,seCol.node.position) + this.single_damage(target,SkillSet[this.s_uuid].DTType==DTType.range?true:false) + // this.ent.destroy() + } + } + + + /** + * 执行2段位移:先升高,然后移到目的地 + */ + private executeTwoStageMovement() { + const totalDuration = SkillSet[this.s_uuid].in-0.1 + const firstStageDuration = totalDuration * 0.4; // 第一段占40%时间 + const secondStageDuration = totalDuration * 0.6; // 第二段占60%时间 + + // 第一段:升高 + const riseHeight = 100; // 升高高度 + const midPosition = v3(this.node.position.x, this.node.position.y + riseHeight, 0); + + // 第二段:移动到目标位置 + const finalPosition = v3(this.targetPos.x, this.targetPos.y, 0); + + // 创建缓动序列 + tween(this.node) + // 第一段:升高 + .to(firstStageDuration, { position: midPosition }, { + easing: 'quadOut' // 使用二次缓出效果,让上升更自然 + }) + // 第二段:移动到目标位置 + .to(secondStageDuration, { position: finalPosition }, { + easing: 'quadInOut' // 使用二次缓入缓出效果 + }).call(()=>{ + this.do_buff() + }) + .start(); + } + private do_buff(){ + //console.log("[SkillCom]:do_buff") + let teams=ecs.query(ecs.allOf(HeroModelComp)) + if(this.fac==FacSet.MON) teams=ecs.query(ecs.allOf(MonModelComp)) + if(SkillSet[this.s_uuid].TGroup==TGroup.Team||SkillSet[this.s_uuid].TGroup==TGroup.Self) { + teams.forEach(entity => { + let view=entity.get(HeroViewComp) + if(view.node.position.x==this.targetPos.x){ + if(SkillSet[this.s_uuid].SType==SType.heal){ + view.add_hp(this.buV,false) + } + if(SkillSet[this.s_uuid].SType==SType.shield){ + view.add_shield(this.buV) + } + } + }); + } + } + + update(deltaTime: number) { + let config=SkillSet[this.s_uuid] + if(smc.mission.pause) { + if(this.spine) this.spine.paused=true + if(this.anim) this.anim.pause() + return; + } + if(this.anim) this.anim.resume() + if(this.spine) this.spine.paused=false + if (!this.node || !this.node.isValid) return; + if(config.EType==EType.timeEnd){ + this.run_time+=deltaTime + if(this.run_time>config.in){ + // //console.log("[SkillCom]: timeEnd destroy",this.s_uuid,this.run_time) + this.is_destroy=true + } + } + //范围伤害 + this.hited_time+=deltaTime + if(this.hited_time>config.hited&&(SkillSet[this.s_uuid].DTType==DTType.range)){ + this.hited_time=0 + this.range_damage() + } + //直线移动 + // if(this.AType == AType.linear) this.startLinearMove(deltaTime); + this.toDestroy(); + } + + toDestroy() { + if(this.is_destroy){ + if (this.ent) { + this.ent.destroy(); + } else { + // 如果ent不存在,直接销毁节点 + if (this.node && this.node.isValid) { + this.node.destroy(); + } + } + } + } + doDestroy(){ + // //console.log("[SkillCom]:doDestroy") + this.is_destroy=true + } + to_console(value:any,value2:any=null,value3:any=null){ + //console.log("[SkillCom]:["+this.s_name+this.s_uuid+"]:",value,value2,value3) + } + + /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ + reset() { + this.is_destroy = false; + this.AType = 0; + this.speed = 0; + this.startPos.set(); + this.targetPos.set(); + this.moveDirection = null; // 重置移动方向 + // 先移除所有碰撞回调 + const collider = this.getComponent(Collider2D); + if (collider) { + collider.off(Contact2DType.BEGIN_CONTACT); + } + this.scheduleOnce(() => { + this.node.destroy(); + }, 0); + } + +} \ No newline at end of file diff --git a/assets/script/game/skills/SkillCom-001.ts.meta b/assets/script/game/skills/SkillCom-001.ts.meta new file mode 100644 index 00000000..c6f4626b --- /dev/null +++ b/assets/script/game/skills/SkillCom-001.ts.meta @@ -0,0 +1 @@ +{"ver":"4.0.23","importer":"typescript","imported":true,"uuid":"dd03bf84-3e0b-43c3-b952-bbf57c82ac92","files":[],"subMetas":{},"userData":{}} diff --git a/assets/script/game/skills/SkillCom.ts b/assets/script/game/skills/SkillCom.ts index 2897f1d5..5ada5d93 100644 --- a/assets/script/game/skills/SkillCom.ts +++ b/assets/script/game/skills/SkillCom.ts @@ -4,7 +4,7 @@ import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/modu import { smc } from "../common/SingletonModuleComp"; import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops"; import { GameEvent } from "../common/config/GameEvent"; -import { AType, DTType, EType, RType, SkillSet, SType, TGroup } from "../common/config/SkillSet"; +import { AType, DTType, EType, SkillSet, SType, TGroup } from "../common/config/SkillSet"; import { BoxSet, FacSet } from "../common/config/BoxSet"; import { HeroViewComp } from "../hero/HeroViewComp"; import { BezierMove } from "../BezierMove/BezierMove"; @@ -117,68 +117,52 @@ export class SkillCom extends CCComp { break; case AType.StartEnd: // 2段位移:先升高,然后移到目的地 - this.executeTwoStageMovement(); + this.node.setPosition(this.startPos.x > 360?300:this.startPos.x,0,0) + this.do_anim() break; case AType.fixedEnd: this.node.setPosition(this.targetPos.x > 360?300:this.targetPos.x,0,0) - if(this.node.getComponent(Animation)){ - let anim = this.node.getComponent(Animation); - //console.log("[SkillCom]:has anim",anim) - anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); - } - if(this.node.getChildByName('anm')){ - if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){ - //console.log("[SkillCom]:has spine",this.spine) - this.spine.setCompleteListener((trackEntry) => { - this.onAnimationFinished() - //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex); - }); - } - } + this.do_anim() break; case AType.fixedStart: // - - this.node.setPosition(this.startPos.x > 360?300:this.startPos.x,0,0) - - if(this.node.getComponent(Animation)){ - let anim = this.node.getComponent(Animation); - //console.log("[SkillCom]:has anim",anim) - anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); - } - if(this.node.getChildByName('anm')){ - if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){ - //console.log("[SkillCom]:has spine",this.spine) - this.spine.setCompleteListener((trackEntry) => { - this.onAnimationFinished() - //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex); - }); - } - } + this.node.setPosition(this.startPos.x > 360?300:this.startPos.x,0,0) + this.do_anim() break; } } - + do_anim(){ + if(this.node.getComponent(Animation)){ + let anim = this.node.getComponent(Animation); + //console.log("[SkillCom]:has anim",anim) + anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this); + } + if(this.node.getChildByName('anm')){ + if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){ + //console.log("[SkillCom]:has spine",this.spine) + this.spine.setCompleteListener((trackEntry) => { + this.onAnimationFinished() + //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex); + }); + } + } + } onAnimationFinished(){ console.log("[SkillCom]:onAnimationFinished",this.s_uuid) if(SkillSet[this.s_uuid].EType==EType.timeEnd) return + if(SkillSet[this.s_uuid].SType!=SType.damage){ + this.to_do_buff() + } + this.is_destroy=true } - //范围伤害 - range_damage(){ - // console.log("[SkillCom]:range_damage",this.s_uuid) - let enemys=ecs.query(ecs.allOf(MonModelComp)) - if(this.fac==FacSet.MON) enemys=ecs.query(ecs.allOf(HeroModelComp)) - enemys.forEach(entity => { - let view=entity.get(HeroViewComp) - if(view){ - let dis_x =Math.abs(this.node.position.x-view.node.position.x) - let dis_y =Math.abs(this.node.position.y-view.node.position.y) - if(dis_x > SkillSet[this.s_uuid].with||dis_y > SkillSet[this.s_uuid].with) return - this.single_damage(view,true) - } - }); + to_do_buff(){ + switch(SkillSet[this.s_uuid].SType){ + case SType.shield: + this.caster.add_shield(SkillSet[this.s_uuid].buV) + break; + } } //单体伤害 single_damage(target:HeroViewComp,is_range:boolean=false){ @@ -205,7 +189,7 @@ export class SkillCom extends CCComp { } this.hit_count++ // console.log("[SkillCom]:碰撞次数:技能次数:穿刺次数",this.hit_count,SkillSet[this.s_uuid].hit,this.puncture) - if(this.hit_count>=(SkillSet[this.s_uuid].hit+this.puncture)&&(SkillSet[this.s_uuid].DTType!=DTType.range)&&(SkillSet[this.s_uuid].EType!=EType.animationEnd)) this.is_destroy=true // 技能命中次数 + if(this.hit_count>=(SkillSet[this.s_uuid].hit+this.puncture)&&(SkillSet[this.s_uuid].DTType!=DTType.range)&&(SkillSet[this.s_uuid].EType!=EType.animationEnd)&&(SkillSet[this.s_uuid].EType!=EType.timeEnd)) this.is_destroy=true // 技能命中次数 } onBeginContact (seCol: Collider2D, oCol: Collider2D) { @@ -221,53 +205,6 @@ export class SkillCom extends CCComp { } - /** - * 执行2段位移:先升高,然后移到目的地 - */ - private executeTwoStageMovement() { - const totalDuration = SkillSet[this.s_uuid].in-0.1 - const firstStageDuration = totalDuration * 0.4; // 第一段占40%时间 - const secondStageDuration = totalDuration * 0.6; // 第二段占60%时间 - - // 第一段:升高 - const riseHeight = 100; // 升高高度 - const midPosition = v3(this.node.position.x, this.node.position.y + riseHeight, 0); - - // 第二段:移动到目标位置 - const finalPosition = v3(this.targetPos.x, this.targetPos.y, 0); - - // 创建缓动序列 - tween(this.node) - // 第一段:升高 - .to(firstStageDuration, { position: midPosition }, { - easing: 'quadOut' // 使用二次缓出效果,让上升更自然 - }) - // 第二段:移动到目标位置 - .to(secondStageDuration, { position: finalPosition }, { - easing: 'quadInOut' // 使用二次缓入缓出效果 - }).call(()=>{ - this.do_buff() - }) - .start(); - } - private do_buff(){ - //console.log("[SkillCom]:do_buff") - let teams=ecs.query(ecs.allOf(HeroModelComp)) - if(this.fac==FacSet.MON) teams=ecs.query(ecs.allOf(MonModelComp)) - if(SkillSet[this.s_uuid].TGroup==TGroup.Team||SkillSet[this.s_uuid].TGroup==TGroup.Self) { - teams.forEach(entity => { - let view=entity.get(HeroViewComp) - if(view.node.position.x==this.targetPos.x){ - if(SkillSet[this.s_uuid].SType==SType.heal){ - view.add_hp(this.buV,false) - } - if(SkillSet[this.s_uuid].SType==SType.shield){ - view.add_shield(this.buV) - } - } - }); - } - } update(deltaTime: number) { let config=SkillSet[this.s_uuid] @@ -286,12 +223,7 @@ export class SkillCom extends CCComp { this.is_destroy=true } } - //范围伤害 - this.hited_time+=deltaTime - if(this.hited_time>config.hited&&(SkillSet[this.s_uuid].DTType==DTType.range)){ - this.hited_time=0 - this.range_damage() - } + //直线移动 // if(this.AType == AType.linear) this.startLinearMove(deltaTime); this.toDestroy(); diff --git a/assets/script/game/skills/com.meta b/assets/script/game/skills/com.meta new file mode 100644 index 00000000..1dd28657 --- /dev/null +++ b/assets/script/game/skills/com.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "9efcc55e-db7c-4761-af6f-ee8bc2f1f63b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/game/skills/com/AtkCom.ts b/assets/script/game/skills/com/AtkCom.ts new file mode 100644 index 00000000..a1b4db4b --- /dev/null +++ b/assets/script/game/skills/com/AtkCom.ts @@ -0,0 +1,29 @@ +import { _decorator } from "cc"; +import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; +import { CCComp } from "../../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; + +const { ccclass, property } = _decorator; + +/** 视图层对象 */ +@ccclass('AtkComComp') +@ecs.register('AtkCom', false) +export class AtkComComp extends CCComp { + /** 视图层逻辑代码分离演示 */ + start() { + // var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象 + // this.on(ModuleEvent.Cmd, this.onHandler, this); + } + + /** 全局消息逻辑处理 */ + // private onHandler(event: string, args: any) { + // switch (event) { + // case ModuleEvent.Cmd: + // break; + // } + // } + + /** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */ + reset() { + this.node.destroy(); + } +} \ No newline at end of file diff --git a/assets/script/game/skills/com/AtkCom.ts.meta b/assets/script/game/skills/com/AtkCom.ts.meta new file mode 100644 index 00000000..f062716b --- /dev/null +++ b/assets/script/game/skills/com/AtkCom.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b1d8ed59-0347-4bb6-ab9f-86276714afca", + "files": [], + "subMetas": {}, + "userData": {} +}