Merge branch 'card' of ssh://dev.eoxnet.com:40086/pixelheros into card
This commit is contained in:
100
assets/resources/game/skill/anm/atk/ball_blue.anim
Normal file
100
assets/resources/game/skill/anm/atk/ball_blue.anim
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "ball_blue",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {
|
||||||
|
"embeddedPlayerGroups": []
|
||||||
|
},
|
||||||
|
"_native": "",
|
||||||
|
"sample": 12,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"enableTrsBlending": false,
|
||||||
|
"_duration": 0.3333333333333333,
|
||||||
|
"_hash": 500763545,
|
||||||
|
"_tracks": [
|
||||||
|
{
|
||||||
|
"__id__": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_exoticAnimation": null,
|
||||||
|
"_events": [],
|
||||||
|
"_embeddedPlayers": [],
|
||||||
|
"_additiveSettings": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_auxiliaryCurveEntries": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ObjectTrack",
|
||||||
|
"_binding": {
|
||||||
|
"__type__": "cc.animation.TrackBinding",
|
||||||
|
"path": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"proxy": null
|
||||||
|
},
|
||||||
|
"_channel": {
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.TrackPath",
|
||||||
|
"_paths": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"spriteFrame"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.HierarchyPath",
|
||||||
|
"path": "Node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ComponentPath",
|
||||||
|
"component": "cc.Sprite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.Channel",
|
||||||
|
"_curve": {
|
||||||
|
"__id__": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.ObjectCurve",
|
||||||
|
"_times": [
|
||||||
|
0,
|
||||||
|
0.08333333333333333,
|
||||||
|
0.16666666666666666,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
"_values": [
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@a4e22",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@2b0ce",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@29738",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@faf10",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||||
|
"enabled": false,
|
||||||
|
"refClip": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/anm/atk/ball_blue.anim.meta
Normal file
13
assets/resources/game/skill/anm/atk/ball_blue.anim.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.3",
|
||||||
|
"importer": "animation-clip",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "863d7ce6-3da1-47c6-9c99-9a6af94dfcfc",
|
||||||
|
"files": [
|
||||||
|
".cconb"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"name": "ball_blue"
|
||||||
|
}
|
||||||
|
}
|
||||||
95
assets/resources/game/skill/anm/atk/ball_fire-001.anim
Normal file
95
assets/resources/game/skill/anm/atk/ball_fire-001.anim
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "ball_fire-001",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {
|
||||||
|
"embeddedPlayerGroups": []
|
||||||
|
},
|
||||||
|
"_native": "",
|
||||||
|
"sample": 12,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"enableTrsBlending": false,
|
||||||
|
"_duration": 0.25,
|
||||||
|
"_hash": 500763545,
|
||||||
|
"_tracks": [
|
||||||
|
{
|
||||||
|
"__id__": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_exoticAnimation": null,
|
||||||
|
"_events": [],
|
||||||
|
"_embeddedPlayers": [],
|
||||||
|
"_additiveSettings": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_auxiliaryCurveEntries": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ObjectTrack",
|
||||||
|
"_binding": {
|
||||||
|
"__type__": "cc.animation.TrackBinding",
|
||||||
|
"path": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"proxy": null
|
||||||
|
},
|
||||||
|
"_channel": {
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.TrackPath",
|
||||||
|
"_paths": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"spriteFrame"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.HierarchyPath",
|
||||||
|
"path": "Node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ComponentPath",
|
||||||
|
"component": "cc.Sprite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.Channel",
|
||||||
|
"_curve": {
|
||||||
|
"__id__": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.ObjectCurve",
|
||||||
|
"_times": [
|
||||||
|
0,
|
||||||
|
0.08333333333333333,
|
||||||
|
0.16666666666666666
|
||||||
|
],
|
||||||
|
"_values": [
|
||||||
|
{
|
||||||
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@59ec8",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@3a170",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@482b5",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||||
|
"enabled": false,
|
||||||
|
"refClip": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/anm/atk/ball_fire-001.anim.meta
Normal file
13
assets/resources/game/skill/anm/atk/ball_fire-001.anim.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.3",
|
||||||
|
"importer": "animation-clip",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "e4ff9dbb-37f1-49d6-b656-b42ceb67f1a7",
|
||||||
|
"files": [
|
||||||
|
".cconb"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"name": "ball_fire-001"
|
||||||
|
}
|
||||||
|
}
|
||||||
100
assets/resources/game/skill/anm/atk/ball_red.anim
Normal file
100
assets/resources/game/skill/anm/atk/ball_red.anim
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "ball_red",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {
|
||||||
|
"embeddedPlayerGroups": []
|
||||||
|
},
|
||||||
|
"_native": "",
|
||||||
|
"sample": 12,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"enableTrsBlending": false,
|
||||||
|
"_duration": 0.3333333333333333,
|
||||||
|
"_hash": 500763545,
|
||||||
|
"_tracks": [
|
||||||
|
{
|
||||||
|
"__id__": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_exoticAnimation": null,
|
||||||
|
"_events": [],
|
||||||
|
"_embeddedPlayers": [],
|
||||||
|
"_additiveSettings": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_auxiliaryCurveEntries": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ObjectTrack",
|
||||||
|
"_binding": {
|
||||||
|
"__type__": "cc.animation.TrackBinding",
|
||||||
|
"path": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"proxy": null
|
||||||
|
},
|
||||||
|
"_channel": {
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.TrackPath",
|
||||||
|
"_paths": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"spriteFrame"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.HierarchyPath",
|
||||||
|
"path": "Node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ComponentPath",
|
||||||
|
"component": "cc.Sprite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.Channel",
|
||||||
|
"_curve": {
|
||||||
|
"__id__": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.ObjectCurve",
|
||||||
|
"_times": [
|
||||||
|
0,
|
||||||
|
0.08333333333333333,
|
||||||
|
0.16666666666666666,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
"_values": [
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@a22e7",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@20740",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@35944",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@b9343",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||||
|
"enabled": false,
|
||||||
|
"refClip": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/anm/atk/ball_red.anim.meta
Normal file
13
assets/resources/game/skill/anm/atk/ball_red.anim.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.3",
|
||||||
|
"importer": "animation-clip",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "d567be4c-7211-471d-b278-c6487f41d3a8",
|
||||||
|
"files": [
|
||||||
|
".cconb"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"name": "ball_red"
|
||||||
|
}
|
||||||
|
}
|
||||||
100
assets/resources/game/skill/anm/atk/ball_yellow.anim
Normal file
100
assets/resources/game/skill/anm/atk/ball_yellow.anim
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClip",
|
||||||
|
"_name": "ball_yellow",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {
|
||||||
|
"embeddedPlayerGroups": []
|
||||||
|
},
|
||||||
|
"_native": "",
|
||||||
|
"sample": 12,
|
||||||
|
"speed": 1,
|
||||||
|
"wrapMode": 2,
|
||||||
|
"enableTrsBlending": false,
|
||||||
|
"_duration": 0.3333333333333333,
|
||||||
|
"_hash": 500763545,
|
||||||
|
"_tracks": [
|
||||||
|
{
|
||||||
|
"__id__": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_exoticAnimation": null,
|
||||||
|
"_events": [],
|
||||||
|
"_embeddedPlayers": [],
|
||||||
|
"_additiveSettings": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_auxiliaryCurveEntries": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ObjectTrack",
|
||||||
|
"_binding": {
|
||||||
|
"__type__": "cc.animation.TrackBinding",
|
||||||
|
"path": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"proxy": null
|
||||||
|
},
|
||||||
|
"_channel": {
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.TrackPath",
|
||||||
|
"_paths": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"spriteFrame"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.HierarchyPath",
|
||||||
|
"path": "Node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.ComponentPath",
|
||||||
|
"component": "cc.Sprite"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.animation.Channel",
|
||||||
|
"_curve": {
|
||||||
|
"__id__": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.ObjectCurve",
|
||||||
|
"_times": [
|
||||||
|
0,
|
||||||
|
0.08333333333333333,
|
||||||
|
0.16666666666666666,
|
||||||
|
0.25
|
||||||
|
],
|
||||||
|
"_values": [
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1b09a",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@341ae",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@6459e",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@820a5",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||||
|
"enabled": false,
|
||||||
|
"refClip": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/anm/atk/ball_yellow.anim.meta
Normal file
13
assets/resources/game/skill/anm/atk/ball_yellow.anim.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "2.0.3",
|
||||||
|
"importer": "animation-clip",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "b7ae2d93-c955-4027-9e7d-959233b51b04",
|
||||||
|
"files": [
|
||||||
|
".cconb"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"name": "ball_yellow"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@25994",
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@25994",
|
||||||
"__expectedType__": "cc.SpriteFrame"
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
},
|
},
|
||||||
"_type": 1,
|
"_type": 0,
|
||||||
"_fillType": 0,
|
"_fillType": 0,
|
||||||
"_sizeMode": 1,
|
"_sizeMode": 1,
|
||||||
"_fillCenter": {
|
"_fillCenter": {
|
||||||
|
|||||||
372
assets/resources/game/skill/atk/ball_blue.prefab
Normal file
372
assets/resources/game/skill/atk/ball_blue.prefab
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "ball_blue",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "ball_blue",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
"_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__": "cc.Node",
|
||||||
|
"_name": "Node",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_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__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 64,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "93pNmvtQlLSqtTgIepyEmA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@a4e22",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6",
|
||||||
|
"__expectedType__": "cc.SpriteAtlas"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "12eKc8gltBz50frJCS5+ww"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "3arqAMBz1MvoXBzeDaL5M/",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 50,
|
||||||
|
"height": 50
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Animation",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
"playOnLoad": true,
|
||||||
|
"_clips": [
|
||||||
|
{
|
||||||
|
"__uuid__": "863d7ce6-3da1-47c6-9c99-9a6af94dfcfc",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_defaultClip": {
|
||||||
|
"__uuid__": "863d7ce6-3da1-47c6-9c99-9a6af94dfcfc",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c2RDvksalG2acL3tyGCY0t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "57aabs7TE1J5obTAZczc+64",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"atk_x": 10,
|
||||||
|
"atk_y": 15,
|
||||||
|
"debugMode": true,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "60LInmZXxDtKu79AshRG9j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.RigidBody2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
"enabledContactListener": true,
|
||||||
|
"bullet": false,
|
||||||
|
"awakeOnLoad": true,
|
||||||
|
"_group": 1,
|
||||||
|
"_type": 1,
|
||||||
|
"_allowSleep": false,
|
||||||
|
"_gravityScale": 1,
|
||||||
|
"_linearDamping": 0,
|
||||||
|
"_angularDamping": 0,
|
||||||
|
"_linearVelocity": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_angularVelocity": 0,
|
||||||
|
"_fixedRotation": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "e1yBA625RLwLhzo6bLYW7j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.BoxCollider2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 17
|
||||||
|
},
|
||||||
|
"tag": 0,
|
||||||
|
"_group": 1,
|
||||||
|
"_density": 1,
|
||||||
|
"_sensor": true,
|
||||||
|
"_friction": 0.2,
|
||||||
|
"_restitution": 0,
|
||||||
|
"_offset": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_size": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 20,
|
||||||
|
"height": 100
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "43ZDJfXX9AX73gyytKQZWm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/atk/ball_blue.prefab.meta
Normal file
13
assets/resources/game/skill/atk/ball_blue.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "7420247a-adb4-4ca4-9eab-e7457c7dc4ca",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "ball_blue"
|
||||||
|
}
|
||||||
|
}
|
||||||
372
assets/resources/game/skill/atk/ball_fire2.prefab
Normal file
372
assets/resources/game/skill/atk/ball_fire2.prefab
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "ball_fire2",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "ball_fire2",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
"_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__": "cc.Node",
|
||||||
|
"_name": "Node",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_lpos": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"_lrot": {
|
||||||
|
"__type__": "cc.Quat",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0.7071067811865475,
|
||||||
|
"w": 0.7071067811865476
|
||||||
|
},
|
||||||
|
"_lscale": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": -0.7,
|
||||||
|
"y": 0.7,
|
||||||
|
"z": 1
|
||||||
|
},
|
||||||
|
"_mobility": 0,
|
||||||
|
"_layer": 1073741824,
|
||||||
|
"_euler": {
|
||||||
|
"__type__": "cc.Vec3",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 90
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 119,
|
||||||
|
"height": 167
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "93pNmvtQlLSqtTgIepyEmA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@59ec8",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": {
|
||||||
|
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23",
|
||||||
|
"__expectedType__": "cc.SpriteAtlas"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "12eKc8gltBz50frJCS5+ww"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "3arqAMBz1MvoXBzeDaL5M/",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 50,
|
||||||
|
"height": 50
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Animation",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
"playOnLoad": true,
|
||||||
|
"_clips": [
|
||||||
|
{
|
||||||
|
"__uuid__": "e4ff9dbb-37f1-49d6-b656-b42ceb67f1a7",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_defaultClip": {
|
||||||
|
"__uuid__": "e4ff9dbb-37f1-49d6-b656-b42ceb67f1a7",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c2RDvksalG2acL3tyGCY0t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "57aabs7TE1J5obTAZczc+64",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"atk_x": 10,
|
||||||
|
"atk_y": 15,
|
||||||
|
"debugMode": true,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "60LInmZXxDtKu79AshRG9j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.RigidBody2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
"enabledContactListener": true,
|
||||||
|
"bullet": false,
|
||||||
|
"awakeOnLoad": true,
|
||||||
|
"_group": 1,
|
||||||
|
"_type": 1,
|
||||||
|
"_allowSleep": false,
|
||||||
|
"_gravityScale": 1,
|
||||||
|
"_linearDamping": 0,
|
||||||
|
"_angularDamping": 0,
|
||||||
|
"_linearVelocity": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_angularVelocity": 0,
|
||||||
|
"_fixedRotation": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "e1yBA625RLwLhzo6bLYW7j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.BoxCollider2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 17
|
||||||
|
},
|
||||||
|
"tag": 0,
|
||||||
|
"_group": 1,
|
||||||
|
"_density": 1,
|
||||||
|
"_sensor": true,
|
||||||
|
"_friction": 0.2,
|
||||||
|
"_restitution": 0,
|
||||||
|
"_offset": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_size": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 50,
|
||||||
|
"height": 50
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "43ZDJfXX9AX73gyytKQZWm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/atk/ball_fire2.prefab.meta
Normal file
13
assets/resources/game/skill/atk/ball_fire2.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "ab7926ea-3e90-48e2-864d-b0a29cee1c9a",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "ball_fire2"
|
||||||
|
}
|
||||||
|
}
|
||||||
372
assets/resources/game/skill/atk/ball_green.prefab
Normal file
372
assets/resources/game/skill/atk/ball_green.prefab
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "ball_green",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "ball_green",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
"_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__": "cc.Node",
|
||||||
|
"_name": "Node",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_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__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 64,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "93pNmvtQlLSqtTgIepyEmA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1b09a",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6",
|
||||||
|
"__expectedType__": "cc.SpriteAtlas"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "12eKc8gltBz50frJCS5+ww"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "3arqAMBz1MvoXBzeDaL5M/",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 50,
|
||||||
|
"height": 50
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Animation",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
"playOnLoad": true,
|
||||||
|
"_clips": [
|
||||||
|
{
|
||||||
|
"__uuid__": "b7ae2d93-c955-4027-9e7d-959233b51b04",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_defaultClip": {
|
||||||
|
"__uuid__": "b7ae2d93-c955-4027-9e7d-959233b51b04",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c2RDvksalG2acL3tyGCY0t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "57aabs7TE1J5obTAZczc+64",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"atk_x": 10,
|
||||||
|
"atk_y": 15,
|
||||||
|
"debugMode": true,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "60LInmZXxDtKu79AshRG9j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.RigidBody2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
"enabledContactListener": true,
|
||||||
|
"bullet": false,
|
||||||
|
"awakeOnLoad": true,
|
||||||
|
"_group": 1,
|
||||||
|
"_type": 1,
|
||||||
|
"_allowSleep": false,
|
||||||
|
"_gravityScale": 1,
|
||||||
|
"_linearDamping": 0,
|
||||||
|
"_angularDamping": 0,
|
||||||
|
"_linearVelocity": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_angularVelocity": 0,
|
||||||
|
"_fixedRotation": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "e1yBA625RLwLhzo6bLYW7j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.BoxCollider2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 17
|
||||||
|
},
|
||||||
|
"tag": 0,
|
||||||
|
"_group": 1,
|
||||||
|
"_density": 1,
|
||||||
|
"_sensor": true,
|
||||||
|
"_friction": 0.2,
|
||||||
|
"_restitution": 0,
|
||||||
|
"_offset": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_size": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 20,
|
||||||
|
"height": 100
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "43ZDJfXX9AX73gyytKQZWm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/atk/ball_green.prefab.meta
Normal file
13
assets/resources/game/skill/atk/ball_green.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "0ddcc956-2a13-4d96-bd0c-22c33f659f7b",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "ball_green"
|
||||||
|
}
|
||||||
|
}
|
||||||
372
assets/resources/game/skill/atk/ball_red.prefab
Normal file
372
assets/resources/game/skill/atk/ball_red.prefab
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"__type__": "cc.Prefab",
|
||||||
|
"_name": "ball_red",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_native": "",
|
||||||
|
"data": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"optimizationPolicy": 0,
|
||||||
|
"persistent": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Node",
|
||||||
|
"_name": "ball_red",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": null,
|
||||||
|
"_children": [
|
||||||
|
{
|
||||||
|
"__id__": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 18
|
||||||
|
},
|
||||||
|
"_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__": "cc.Node",
|
||||||
|
"_name": "Node",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"_parent": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_children": [],
|
||||||
|
"_active": true,
|
||||||
|
"_components": [
|
||||||
|
{
|
||||||
|
"__id__": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__id__": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_prefab": {
|
||||||
|
"__id__": 7
|
||||||
|
},
|
||||||
|
"_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__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 4
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 64,
|
||||||
|
"height": 64
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "93pNmvtQlLSqtTgIepyEmA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Sprite",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 6
|
||||||
|
},
|
||||||
|
"_customMaterial": null,
|
||||||
|
"_srcBlendFactor": 2,
|
||||||
|
"_dstBlendFactor": 4,
|
||||||
|
"_color": {
|
||||||
|
"__type__": "cc.Color",
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255,
|
||||||
|
"a": 255
|
||||||
|
},
|
||||||
|
"_spriteFrame": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@a22e7",
|
||||||
|
"__expectedType__": "cc.SpriteFrame"
|
||||||
|
},
|
||||||
|
"_type": 0,
|
||||||
|
"_fillType": 0,
|
||||||
|
"_sizeMode": 1,
|
||||||
|
"_fillCenter": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_fillStart": 0,
|
||||||
|
"_fillRange": 0,
|
||||||
|
"_isTrimmedMode": true,
|
||||||
|
"_useGrayscale": false,
|
||||||
|
"_atlas": {
|
||||||
|
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6",
|
||||||
|
"__expectedType__": "cc.SpriteAtlas"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "12eKc8gltBz50frJCS5+ww"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "3arqAMBz1MvoXBzeDaL5M/",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null,
|
||||||
|
"nestedPrefabInstanceRoots": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.UITransform",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 9
|
||||||
|
},
|
||||||
|
"_contentSize": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 50,
|
||||||
|
"height": 50
|
||||||
|
},
|
||||||
|
"_anchorPoint": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0.5,
|
||||||
|
"y": 0.5
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.Animation",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 11
|
||||||
|
},
|
||||||
|
"playOnLoad": true,
|
||||||
|
"_clips": [
|
||||||
|
{
|
||||||
|
"__uuid__": "d567be4c-7211-471d-b278-c6487f41d3a8",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"_defaultClip": {
|
||||||
|
"__uuid__": "d567be4c-7211-471d-b278-c6487f41d3a8",
|
||||||
|
"__expectedType__": "cc.AnimationClip"
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "c2RDvksalG2acL3tyGCY0t"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "57aabs7TE1J5obTAZczc+64",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 13
|
||||||
|
},
|
||||||
|
"atk_x": 10,
|
||||||
|
"atk_y": 15,
|
||||||
|
"debugMode": true,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "60LInmZXxDtKu79AshRG9j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.RigidBody2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 15
|
||||||
|
},
|
||||||
|
"enabledContactListener": true,
|
||||||
|
"bullet": false,
|
||||||
|
"awakeOnLoad": true,
|
||||||
|
"_group": 1,
|
||||||
|
"_type": 1,
|
||||||
|
"_allowSleep": false,
|
||||||
|
"_gravityScale": 1,
|
||||||
|
"_linearDamping": 0,
|
||||||
|
"_angularDamping": 0,
|
||||||
|
"_linearVelocity": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_angularVelocity": 0,
|
||||||
|
"_fixedRotation": false,
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "e1yBA625RLwLhzo6bLYW7j"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.BoxCollider2D",
|
||||||
|
"_name": "",
|
||||||
|
"_objFlags": 0,
|
||||||
|
"__editorExtras__": {},
|
||||||
|
"node": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"_enabled": true,
|
||||||
|
"__prefab": {
|
||||||
|
"__id__": 17
|
||||||
|
},
|
||||||
|
"tag": 0,
|
||||||
|
"_group": 1,
|
||||||
|
"_density": 1,
|
||||||
|
"_sensor": true,
|
||||||
|
"_friction": 0.2,
|
||||||
|
"_restitution": 0,
|
||||||
|
"_offset": {
|
||||||
|
"__type__": "cc.Vec2",
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"_size": {
|
||||||
|
"__type__": "cc.Size",
|
||||||
|
"width": 20,
|
||||||
|
"height": 100
|
||||||
|
},
|
||||||
|
"_id": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.CompPrefabInfo",
|
||||||
|
"fileId": "43ZDJfXX9AX73gyytKQZWm"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__type__": "cc.PrefabInfo",
|
||||||
|
"root": {
|
||||||
|
"__id__": 1
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"__id__": 0
|
||||||
|
},
|
||||||
|
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||||
|
"instance": null,
|
||||||
|
"targetOverrides": null
|
||||||
|
}
|
||||||
|
]
|
||||||
13
assets/resources/game/skill/atk/ball_red.prefab.meta
Normal file
13
assets/resources/game/skill/atk/ball_red.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ver": "1.1.50",
|
||||||
|
"importer": "prefab",
|
||||||
|
"imported": true,
|
||||||
|
"uuid": "7256c23c-9a9a-46d8-90e8-d2a64a421114",
|
||||||
|
"files": [
|
||||||
|
".json"
|
||||||
|
],
|
||||||
|
"subMetas": {},
|
||||||
|
"userData": {
|
||||||
|
"syncNodeName": "ball_red"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -12,11 +12,11 @@ const { ccclass, property } = _decorator;
|
|||||||
@ccclass('Main')
|
@ccclass('Main')
|
||||||
export class Main extends Root {
|
export class Main extends Root {
|
||||||
start() {
|
start() {
|
||||||
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb
|
// PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb
|
||||||
|EPhysics2DDrawFlags.Pair
|
// |EPhysics2DDrawFlags.Pair
|
||||||
|EPhysics2DDrawFlags.CenterOfMass
|
// |EPhysics2DDrawFlags.CenterOfMass
|
||||||
|EPhysics2DDrawFlags.Joint
|
// |EPhysics2DDrawFlags.Joint
|
||||||
|EPhysics2DDrawFlags.Shape;
|
// |EPhysics2DDrawFlags.Shape;
|
||||||
}
|
}
|
||||||
protected async run() {
|
protected async run() {
|
||||||
smc.initialize = ecs.getEntity<Initialize>(Initialize);
|
smc.initialize = ecs.getEntity<Initialize>(Initialize);
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
|
//大招
|
||||||
6002: {
|
6002: {
|
||||||
uuid:6002,name:"闪光攻击",sp_name:"atk_s2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
|
uuid:6002,name:"闪光攻击",sp_name:"atk_s2",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
|
||||||
DTType:DTType.single,ap:150,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:150,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
@@ -178,12 +179,12 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,击退率20%",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,击退率20%",
|
||||||
},
|
},
|
||||||
6004: {
|
6004: {
|
||||||
uuid:6004,name:"闪电攻击",sp_name:"atk_s4",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
|
uuid:6004,name:"闪电攻击",sp_name:"atk_s4",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max",
|
||||||
DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,暴击率20%",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"对多个目标造成150%攻击的伤害,暴击率20%",
|
||||||
},
|
},
|
||||||
6005: {
|
6005: {
|
||||||
uuid:6005,name:"半月攻击",sp_name:"atk_light",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6005,name:"半月攻击",sp_name:"atk_light",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:100,hit_count:3,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:3,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"穿透多个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"穿透多个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
@@ -195,44 +196,46 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
6102: {
|
6102: {
|
||||||
uuid:6102,name:"冰冻射击",sp_name:"arrow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6102,name:"冰冻射击",sp_name:"arrow_blue",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
6103: {
|
6103: {
|
||||||
uuid:6103,name:"暴击射击",sp_name:"arrow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6103,name:"暴击射击",sp_name:"arrow_red",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
|
//大招
|
||||||
6104: {
|
6104: {
|
||||||
uuid:6104,name:"闪光设计",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",
|
uuid:6104,name:"闪光设计",sp_name:"arrow_big_yellow",icon:"1135",TGroup:TGroup.Enemy,readyAnm:"yellow",endAnm:"",act:"max",
|
||||||
DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,crt:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对多个目标造成100%攻击的伤害,暴击",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对多个目标造成100%攻击的伤害,暴击",
|
||||||
},
|
},
|
||||||
|
|
||||||
//===========魔法技能===========
|
//===========魔法技能===========
|
||||||
6201: {
|
6201: {
|
||||||
uuid:6201,name:"冰击",sp_name:"ball_forst",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6201,name:"蓝波",sp_name:"ball_blue",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,frz:20,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,frz:20,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,冰冻率20%",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,冰冻率20%",
|
||||||
},
|
},
|
||||||
6202: {
|
6202: {
|
||||||
uuid:6202,name:"冰球",sp_name:"ball_ice",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6202,name:"绿波",sp_name:"ball_green",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
6203: {
|
6203: {
|
||||||
uuid:6203,name:"火击",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6203,name:"红波",sp_name:"ball_red",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害",
|
||||||
},
|
},
|
||||||
|
//大招
|
||||||
6204: {
|
6204: {
|
||||||
uuid:6204,name:"火球",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6204,name:"火球",sp_name:"ball_fire",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,bck:20,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,bck:20,ap:100,hit_count:1,hitcd:0.3,speed:720,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,击退率20%",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对单个目标造成100%攻击的伤害,击退率20%",
|
||||||
},
|
},
|
||||||
6205: {
|
6205: {
|
||||||
uuid:6205,name:"月波",sp_name:"ball_gquan",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6205,name:"月波",sp_name:"ball_gquan",icon:"1126",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,ap:200,hit_count:6,hitcd:0.3,speed:300,with:90,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,ap:200,hit_count:6,hitcd:0.3,speed:300,with:90,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.linear,EType:EType.collision,buffs:[],info:"对多个目标造成200%攻击的伤害",
|
RType:RType.linear,EType:EType.collision,buffs:[],info:"对多个目标造成200%攻击的伤害",
|
||||||
},
|
},
|
||||||
@@ -243,7 +246,7 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"多次对多个目标造成150%攻击的伤害,暴击率20%",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"多次对多个目标造成150%攻击的伤害,暴击率20%",
|
||||||
},
|
},
|
||||||
6207: {
|
6207: {
|
||||||
uuid:6207,name:"冰刺",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"reds",endAnm:"",act:"max",
|
uuid:6207,name:"冰刺",sp_name:"atk_fire",icon:"1173",TGroup:TGroup.Enemy,readyAnm:"blues",endAnm:"",act:"max",
|
||||||
DTType:DTType.range,frz:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.range,frz:20,ap:100,hit_count:6,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"多次对多个目标造成150%攻击的伤害,冰冻率20%",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"多次对多个目标造成150%攻击的伤害,冰冻率20%",
|
||||||
},
|
},
|
||||||
@@ -255,7 +258,7 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
|
|
||||||
//============================= ====== 辅助技能 ====== ==========================
|
//============================= ====== 辅助技能 ====== ==========================
|
||||||
6301:{
|
6301:{
|
||||||
uuid:6301,name:"魔法盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6301,name:"魔法盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Shield,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Shield,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"获得300%攻击力的护盾",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"获得300%攻击力的护盾",
|
||||||
},
|
},
|
||||||
@@ -265,7 +268,7 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗1个友方300%攻击力的生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"治疗1个友方300%攻击力的生命值",
|
||||||
},
|
},
|
||||||
6303:{
|
6303:{
|
||||||
uuid:6303,name:"护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6303,name:"护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Self,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Shield,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Shield,ap:300,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机1个友方获得300%攻击力的护盾",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机1个友方获得300%攻击力的护盾",
|
||||||
},
|
},
|
||||||
@@ -275,38 +278,38 @@ export const SkillSet: Record<number, SkillConfig> = {
|
|||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机治疗3个友方200%攻击力的生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机治疗3个友方200%攻击力的生命值",
|
||||||
},
|
},
|
||||||
6305:{
|
6305:{
|
||||||
uuid:6305,name:"群体护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6305,name:"群体护盾",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Shield,ap:200,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Shield,ap:200,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机3个友方获得200%攻击力的护盾",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[],info:"随机3个友方获得200%攻击力的护盾",
|
||||||
},
|
},
|
||||||
//==========================buff 技能=====================
|
//==========================buff 技能=====================
|
||||||
6401:{
|
6401:{
|
||||||
uuid:6401,name:"单体攻击",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6401,name:"单体攻击",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"ap_up",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5}],info:"随机1个友方+5攻击",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5}],info:"随机1个友方+5攻击",
|
||||||
},
|
},
|
||||||
6402:{
|
6402:{
|
||||||
uuid:6402,name:"单体生命",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6402,name:"单体生命",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:"随机1个友方+20最大生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:20}],info:"随机1个友方+20最大生命值",
|
||||||
},
|
},
|
||||||
6403:{
|
6403:{
|
||||||
uuid:6403,name:"单体全能",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6403,name:"单体全能",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:1,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5},{buff:Attrs.hp_max,value:20}],info:"随机1个友方+2攻击,+10最大生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:5},{buff:Attrs.hp_max,value:20}],info:"随机1个友方+2攻击,+10最大生命值",
|
||||||
},
|
},
|
||||||
6404:{
|
6404:{
|
||||||
uuid:6404,name:"群体攻击",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6404,name:"群体攻击",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"ap_up",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2}],info:"随机3个友方+2攻击",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2}],info:"随机3个友方+2攻击",
|
||||||
},
|
},
|
||||||
6405:{
|
6405:{
|
||||||
uuid:6405,name:"群体生命",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6405,name:"群体生命",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"up_hp",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:10}],info:"随机3个友方+10最大生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.hp_max,value:10}],info:"随机3个友方+10最大生命值",
|
||||||
},
|
},
|
||||||
6406:{
|
6406:{
|
||||||
uuid:6406,name:"群体全能",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"",endAnm:"",act:"atk",
|
uuid:6406,name:"群体全能",sp_name:"buff_wind",icon:"1255",TGroup:TGroup.Team,readyAnm:"ap_up",endAnm:"",act:"atk",
|
||||||
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
DTType:DTType.single,kind:SkillKind.Support,ap:0,hit_count:3,hitcd:0.2,speed:720,with:0,ready:0,EAnm:0,DAnm:"",
|
||||||
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2},{buff:Attrs.hp_max,value:10}],info:"随机3个友方+2攻击,+10最大生命值",
|
RType:RType.fixed,EType:EType.animationEnd,buffs:[{buff:Attrs.ap,value:2},{buff:Attrs.hp_max,value:10}],info:"随机3个友方+2攻击,+10最大生命值",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { v3 } from "cc"
|
import { v3 } from "cc"
|
||||||
import { BoxSet, FacSet } from "./GameSet"
|
import { BoxSet, FacSet } from "./GameSet"
|
||||||
import { SkillSet } from "./SkillSet";
|
|
||||||
|
|
||||||
export enum HType {
|
export enum HType {
|
||||||
Melee = 0,
|
Melee = 0,
|
||||||
@@ -86,12 +85,12 @@ export interface HSkillInfo {
|
|||||||
* skills[0]是普通攻击技能
|
* skills[0]是普通攻击技能
|
||||||
* skills[1]是等级1时的技能,skills[2]是等级2时的技能,skills[3]是等级3时的技能,最多3级
|
* skills[1]是等级1时的技能,skills[2]是等级2时的技能,skills[3]是等级3时的技能,最多3级
|
||||||
*
|
*
|
||||||
* 属性基准(cards_lv:1,lv:1) : SPEED:120,AP:30 |HP:300|as:1
|
* 属性基准(cards_lv:1,lv:1) : SPEED:120,AP:30 | HP:300 | skills[0].cd=1
|
||||||
* 坦克(cards_lv:1,lv:1) : SPEED:180,AP:25 |HP:450|as:0.75
|
* 坦克(cards_lv:1,lv:1) : SPEED:180,AP:25 | HP:450 | skills[0].cd=0.75
|
||||||
* 近战dps(cards_lv:1,lv:1) : SPEED:180,AP:50 |HP:250|as:1.1
|
* 近战dps(cards_lv:1,lv:1) : SPEED:180,AP:50 | HP:250 | skills[0].cd=1.1
|
||||||
* 远程dps(cards_lv:1,lv:1) : SPEED:120,AP:60 |HP:150|as:1.3
|
* 远程dps(cards_lv:1,lv:1) : SPEED:120,AP:60 | HP:150 | skills[0].cd=1.3
|
||||||
*远程法dps(cards_lv:1,lv:1) : SPEED:100,AP:60 |HP:150|as:1.4
|
*远程法dps(cards_lv:1,lv:1) : SPEED:100,AP:60 | HP:150 | skills[0].cd=1.4
|
||||||
* 远程辅助(cards_lv:1,lv:1) : SPEED:100,AP:20 |HP:150|as:1
|
* 远程辅助(cards_lv:1,lv:1) : SPEED:100,AP:20 | HP:150 | skills[0].cd=1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const HeroInfo: Record<number, heroInfo> = {
|
export const HeroInfo: Record<number, heroInfo> = {
|
||||||
@@ -110,34 +109,34 @@ export const HeroInfo: Record<number, heroInfo> = {
|
|||||||
|
|
||||||
// ========== 法师英雄 ==========
|
// ========== 法师英雄 ==========
|
||||||
5101:{uuid:5101,name:"奥术法师",path:"hm2", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:100,
|
5101:{uuid:5101,name:"奥术法师",path:"hm2", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:100,
|
||||||
skills:{6005:{uuid:6005,lv:1,cd:1.4,ccd:0},6012:{uuid:6012,lv:1,cd:5,ccd:0}},info:"冰球,冰锥 远法dps"},
|
skills:{6201:{uuid:6201,lv:1,cd:1.4,ccd:0},6012:{uuid:6012,lv:1,cd:5,ccd:0}},info:"冰球,冰锥 远法dps"},
|
||||||
5102:{uuid:5012,name:"火焰法师",path:"hm1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:300,ap:120,speed:100,
|
5102:{uuid:5012,name:"火焰法师",path:"hm1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Long,hp:300,ap:120,speed:100,
|
||||||
skills:{6004:{uuid:6004,lv:1,cd:1.4,ccd:0},6013:{uuid:6013,lv:1,cd:5,ccd:0}},info:"火击,火球 远法dps"},
|
skills:{6203:{uuid:6203,lv:1,cd:1.4,ccd:0},6013:{uuid:6013,lv:1,cd:5,ccd:0}},info:"火击,火球 远法dps"},
|
||||||
5103:{uuid:5013,name:"冰法法师",path:"hm4", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:450,ap:180,speed:100,
|
5103:{uuid:5013,name:"冰法法师",path:"hm4", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:450,ap:180,speed:100,
|
||||||
skills:{6003:{uuid:6003,lv:1,cd:1.4,ccd:0},6012:{uuid:6012,lv:1,cd:5,ccd:0}},info:"冰击,冰锥 远法dps"},
|
skills:{6201:{uuid:6201,lv:1,cd:1.4,ccd:0},6012:{uuid:6012,lv:1,cd:5,ccd:0}},info:"冰击,冰锥 远法dps"},
|
||||||
5104:{uuid:5104,name:"寒霜术士",path:"hm4", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:600,ap:240,speed:100,
|
5104:{uuid:5104,name:"寒霜术士",path:"hm4", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Long,hp:600,ap:240,speed:100,
|
||||||
skills:{6012:{uuid:6012,lv:1,cd:1.4,ccd:0},6202:{uuid:6202,lv:1,cd:5,ccd:0}},info:"冰锥,冰刺 远法dps"},
|
skills:{6201:{uuid:6201,lv:1,cd:1.4,ccd:0},6202:{uuid:6202,lv:1,cd:5,ccd:0}},info:"冰锥,冰刺 远法dps"},
|
||||||
5105:{uuid:5105,name:"炎爆法师",path:"hm3", fac:FacSet.HERO,cards_lv:5,lv:1,type:HType.Long,hp:750,ap:300,speed:100,
|
5105:{uuid:5105,name:"炎爆法师",path:"hm3", fac:FacSet.HERO,cards_lv:5,lv:1,type:HType.Long,hp:750,ap:300,speed:100,
|
||||||
skills:{6013:{uuid:6013,lv:1,cd:1.4,ccd:0},6201:{uuid:6201,lv:1,cd:5,ccd:0}},info:"火球,陨石术 远法dps" },
|
skills:{6203:{uuid:6203,lv:1,cd:1.4,ccd:0},6201:{uuid:6201,lv:1,cd:5,ccd:0}},info:"火球,陨石术 远法dps" },
|
||||||
|
|
||||||
// ========== 远程英雄 ==========
|
// ========== 远程英雄 ==========
|
||||||
5201:{uuid:5201,name:"射手",path:"ha1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:120,
|
5201:{uuid:5201,name:"射手",path:"ha1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:60,speed:120,
|
||||||
skills:{6002:{uuid:6002,lv:1,cd:1.3,ccd:0},6011:{uuid:6011,lv:1,cd:5,ccd:0}},info:"普通射击,暴射 远dps"},
|
skills:{6101:{uuid:6101,lv:1,cd:1.3,ccd:0},6011:{uuid:6011,lv:1,cd:5,ccd:0}},info:"普通射击,暴射 远dps"},
|
||||||
|
|
||||||
5202:{uuid:5202,name:"游侠",path:"ha2", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:450,ap:180,speed:120,
|
5202:{uuid:5202,name:"游侠",path:"ha2", fac:FacSet.HERO,cards_lv:3,lv:1,type:HType.Long,hp:450,ap:180,speed:120,
|
||||||
skills:{6011:{uuid:6011,lv:1,cd:1.3,ccd:0},6101:{uuid:6101,lv:1,cd:5,ccd:0}},info:"暴射,光箭 远dps"},
|
skills:{6011:{uuid:6101,lv:1,cd:1.3,ccd:0},6101:{uuid:6101,lv:1,cd:5,ccd:0}},info:"暴射,光箭 远dps"},
|
||||||
|
|
||||||
// ========== 腐竹英雄 ==========
|
// ========== 腐竹英雄 ==========
|
||||||
5301:{uuid:5301,name:"牧师",path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:20,speed:100,
|
5301:{uuid:5301,name:"牧师",path:"hh1", fac:FacSet.HERO,cards_lv:1,lv:1,type:HType.Long,hp:150,ap:20,speed:100,
|
||||||
skills:{6012:{uuid:6012,lv:1,cd:1,ccd:0},6302:{uuid:6302,lv:1,cd:5,ccd:0}},info:"冰锥1,治疗 远辅助" },
|
skills:{6202:{uuid:6202,lv:1,cd:1,ccd:0},6302:{uuid:6302,lv:1,cd:5,ccd:0}},info:"冰锥1,治疗 远辅助" },
|
||||||
|
|
||||||
5302:{uuid:5302,name:"战地医师",path:"hz1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Mid,hp:300,ap:40,speed:100,
|
5302:{uuid:5302,name:"战地医师",path:"hz1", fac:FacSet.HERO,cards_lv:2,lv:1,type:HType.Mid,hp:300,ap:40,speed:100,
|
||||||
skills:{6012:{uuid:6012,lv:1,cd:1,ccd:0},6304:{uuid:6304,lv:1,cd:5,ccd:0}},info:"冰锥1,群体治疗 远辅助"},
|
skills:{6202:{uuid:6202,lv:1,cd:1,ccd:0},6304:{uuid:6304,lv:1,cd:5,ccd:0}},info:"冰锥1,群体治疗 远辅助"},
|
||||||
|
|
||||||
5303:{uuid:5303,name:"守护祭司",path:"ha3", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Mid,hp:600,ap:80,speed:100,
|
5303:{uuid:5303,name:"守护祭司",path:"ha3", fac:FacSet.HERO,cards_lv:4,lv:1,type:HType.Mid,hp:600,ap:80,speed:100,
|
||||||
skills:{6002:{uuid:6002,lv:1,cd:1,ccd:0},6004:{uuid:6004,lv:1,cd:5,ccd:0}},info:"普通射击,单体攻击buff 射手辅助"},
|
skills:{6202:{uuid:6202,lv:1,cd:1,ccd:0},6004:{uuid:6004,lv:1,cd:5,ccd:0}},info:"普通射击,单体攻击buff 射手辅助"},
|
||||||
5304:{uuid:5304,name:"秘法精灵",path:"ha3", fac:FacSet.HERO,cards_lv:6,lv:1,type:HType.Long,hp:900,ap:120,speed:100,
|
5304:{uuid:5304,name:"秘法精灵",path:"ha3", fac:FacSet.HERO,cards_lv:6,lv:1,type:HType.Long,hp:900,ap:120,speed:100,
|
||||||
skills:{6002:{uuid:6002,lv:1,cd:1,ccd:0},6105:{uuid:6105,lv:1,cd:5,ccd:0}},info:"普通射击,群体攻击buff 射手辅助"},
|
skills:{6202:{uuid:6202,lv:1,cd:1,ccd:0},6105:{uuid:6105,lv:1,cd:5,ccd:0}},info:"普通射击,群体攻击buff 射手辅助"},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -154,21 +153,19 @@ export const HeroInfo: Record<number, heroInfo> = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//============== 兽人系列 ===============
|
//============== 兽人系列 ===============
|
||||||
// 1. 基础近战型
|
// 近战型
|
||||||
6001:{uuid:6001,name:"兽人战士",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:180,skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
6001:{uuid:6001,name:"兽人战士",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:120,
|
||||||
// 2. 快速突击型
|
skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
||||||
6002:{uuid:6002,name:"兽人斥候",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:180,skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
6003:{uuid:6003,name:"兽人卫士",path:"mo4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:350,ap:30,speed:120,
|
||||||
// 3. 重型坦克型
|
skills:{6001:{uuid:6001,lv:1,cd:2,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
||||||
6003:{uuid:6003,name:"兽人卫士",path:"mo3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:350,ap:30,speed:120,skills:{6001:{uuid:6001,lv:1,cd:2,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
// 4. 远程
|
||||||
|
6004:{uuid:6004,name:"兽人射手",path:"mo2", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:80,
|
||||||
// 4. 远程骚扰型
|
skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
||||||
6004:{uuid:6004,name:"兽人射手",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Long,hp:80,ap:45,speed:80,skills:{6001:{uuid:6001,lv:1,cd:1.5,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
6005:{uuid:6005,name:"兽人法师",path:"mo5", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:80,ap:20,speed:80,
|
||||||
|
skills:{6001:{uuid:6001,lv:1,cd:1,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
||||||
// 5. 特殊机制型
|
// 6. 精英/BOSS型
|
||||||
6005:{uuid:6005,name:"兽人自爆兵",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:180,skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
6002:{uuid:6002,name:"兽人斥候",path:"mo3", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:120,ap:12,speed:180,
|
||||||
6006:{uuid:6006,name:"兽人召唤师",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:80,ap:20,speed:80,skills:{6001:{uuid:6001,lv:1,cd:1,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
skills:{6001:{uuid:6001,lv:1,cd:0.65,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
||||||
6007:{uuid:6007,name:"兽人祭司",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:80,ap:20,speed:80,skills:{6001:{uuid:6001,lv:1,cd:1,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
6006:{uuid:6006,name:"兽人首领(BOSS)",path:"mo6", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100,
|
||||||
6008:{uuid:6008,name:"兽人图腾师",path:"mo1", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:80,ap:20,speed:80,skills:{6001:{uuid:6001,lv:1,cd:1,ccd:0},6003:{uuid:6003,lv:1,cd:10,ccd:0}},info:""},
|
skills:{6002:{uuid:6002,lv:1,cd:1,ccd:0},6004:{uuid:6004,lv:1,cd:10,ccd:0}},info:""},
|
||||||
// 6. 精英/BOSS型
|
|
||||||
6009:{uuid:6009,name:"兽人首领(BOSS)",path:"mo4", fac:FacSet.MON,cards_lv:1,lv:1,type:HType.Melee,hp:1500,ap:20,speed:100,skills:{6002:{uuid:6002,lv:1,cd:1,ccd:0},6004:{uuid:6004,lv:1,cd:10,ccd:0}},info:""},
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,14 +10,20 @@ import { GameEvent } from "../common/config/GameEvent";
|
|||||||
import { Attrs} from "../common/config/HeroAttrs";
|
import { Attrs} from "../common/config/HeroAttrs";
|
||||||
import { MoveComp } from "./MoveComp";
|
import { MoveComp } from "./MoveComp";
|
||||||
import { mLogger } from "../common/Logger";
|
import { mLogger } from "../common/Logger";
|
||||||
/** 角色实体 */
|
/** 英雄实体:负责英雄节点创建、属性初始化、入场动画与销毁流程 */
|
||||||
@ecs.register(`Hero`)
|
@ecs.register(`Hero`)
|
||||||
|
|
||||||
export class Hero extends ecs.Entity {
|
export class Hero extends ecs.Entity {
|
||||||
|
/** 英雄数据组件引用 */
|
||||||
HeroModel!: HeroAttrsComp;
|
HeroModel!: HeroAttrsComp;
|
||||||
|
/** 英雄表现组件引用 */
|
||||||
View!: HeroViewComp;
|
View!: HeroViewComp;
|
||||||
|
/** 英雄移动组件引用 */
|
||||||
HeroMove!: MoveComp;
|
HeroMove!: MoveComp;
|
||||||
debugMode: boolean = false; // 是否启用调试模式
|
/** 调试开关,开启后输出实体层级等调试信息 */
|
||||||
|
debugMode: boolean = false;
|
||||||
|
|
||||||
|
/** 注册实体必需组件:移动 + 属性 */
|
||||||
protected init() {
|
protected init() {
|
||||||
this.addComponents<ecs.Comp>(
|
this.addComponents<ecs.Comp>(
|
||||||
MoveComp,
|
MoveComp,
|
||||||
@@ -25,88 +31,111 @@ export class Hero extends ecs.Entity {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 销毁实体并释放视图节点,防止残留碰撞体与显示对象 */
|
||||||
destroy(): void {
|
destroy(): void {
|
||||||
// 销毁节点,防止视觉残留
|
// 优先销毁节点,避免实体销毁后场景仍残留可见对象
|
||||||
const view = this.get(HeroViewComp);
|
const view = this.get(HeroViewComp);
|
||||||
if (view && view.node && view.node.isValid) {
|
if (view && view.node && view.node.isValid) {
|
||||||
view.node.destroy();
|
view.node.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 手动移除组件,确保 ecs 侧引用及时释放
|
||||||
this.remove(HeroViewComp);
|
this.remove(HeroViewComp);
|
||||||
this.remove(HeroAttrsComp);
|
this.remove(HeroAttrsComp);
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** 加载角色 */
|
/**
|
||||||
|
* 加载并初始化英雄
|
||||||
|
* 1) 创建节点并挂到 HERO 层
|
||||||
|
* 2) 初始化表现与属性数据
|
||||||
|
* 3) 播放下落入场并在落地后启用碰撞与移动
|
||||||
|
*/
|
||||||
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, dropToY:number = pos.y,hero_lv:number=1) {
|
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, dropToY:number = pos.y,hero_lv:number=1) {
|
||||||
|
// 英雄始终朝右,表现缩放固定为正向
|
||||||
scale = 1
|
scale = 1
|
||||||
|
// 英雄等级在当前规则下上限为 3,避免超配表范围
|
||||||
if(hero_lv>3) hero_lv=3
|
if(hero_lv>3) hero_lv=3
|
||||||
// 查找空闲英雄槽位
|
// 英雄尺寸随等级做轻量放大,强化成长反馈
|
||||||
let size=1+0.1*hero_lv
|
let size=1+0.1*hero_lv
|
||||||
|
// 根据配置路径加载英雄预制体
|
||||||
var path = "game/heros/"+HeroInfo[uuid].path;
|
var path = "game/heros/"+HeroInfo[uuid].path;
|
||||||
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
||||||
var node = instantiate(prefab);
|
var node = instantiate(prefab);
|
||||||
var scene = smc.map.MapView.scene;
|
var scene = smc.map.MapView.scene;
|
||||||
|
// 统一挂到实体显示层 HERO 节点下
|
||||||
node.parent = scene.entityLayer!.node!.getChildByName("HERO")!;
|
node.parent = scene.entityLayer!.node!.getChildByName("HERO")!;
|
||||||
const collider = node.getComponent(BoxCollider2D);
|
const collider = node.getComponent(BoxCollider2D);
|
||||||
if (collider) collider.enabled = false; // 先禁用
|
// 入场过程暂不参与碰撞,防止半空触发战斗逻辑
|
||||||
|
if (collider) collider.enabled = false;
|
||||||
node.setScale(size*node.scale.x,size*node.scale.y);
|
node.setScale(size*node.scale.x,size*node.scale.y);
|
||||||
node.setPosition(pos)
|
node.setPosition(pos)
|
||||||
|
|
||||||
// 🔥 设置初始 SiblingIndex - 英雄基础层级 + 位置偏移
|
// 输出节点层级信息,便于排查遮挡与渲染顺序问题
|
||||||
|
|
||||||
mLogger.log(this.debugMode,"hero",node.getSiblingIndex());
|
mLogger.log(this.debugMode,"hero",node.getSiblingIndex());
|
||||||
|
|
||||||
var hv = node.getComponent(HeroViewComp)!;
|
var hv = node.getComponent(HeroViewComp)!;
|
||||||
const model = this.get(HeroAttrsComp);
|
const model = this.get(HeroAttrsComp);
|
||||||
let hero = HeroInfo[uuid]; // 共用英雄数据
|
// 从配置中读取英雄静态数据
|
||||||
|
let hero = HeroInfo[uuid];
|
||||||
|
|
||||||
// 设置 View 层属性(表现相关)
|
// 视图层参数:朝向与碰撞阵营
|
||||||
hv.scale = 1;
|
hv.scale = 1;
|
||||||
hv.box_group = BoxSet.HERO;
|
hv.box_group = BoxSet.HERO;
|
||||||
// 设置 Model 层属性(数据相关)
|
// 模型层参数:身份、阵营、等级、职业
|
||||||
model.hero_uuid = uuid;
|
model.hero_uuid = uuid;
|
||||||
model.hero_name = hero.name;
|
model.hero_name = hero.name;
|
||||||
model.lv = hero_lv;
|
model.lv = hero_lv;
|
||||||
model.type = hero.type;
|
model.type = hero.type;
|
||||||
model.fac = FacSet.HERO;
|
model.fac = FacSet.HERO;
|
||||||
// 只有主角才挂载天赋组件
|
|
||||||
|
|
||||||
// ✅ 初始化技能数据(迁移到 HeroSkillsComp)
|
// 基础属性按等级倍率初始化
|
||||||
|
|
||||||
// 设置基础属性
|
|
||||||
model.ap = hero.ap*model.lv;
|
model.ap = hero.ap*model.lv;
|
||||||
model.hp= model.hp_max = hero.hp*model.lv;
|
model.hp= model.hp_max = hero.hp*model.lv;
|
||||||
model.speed = hero.speed;
|
model.speed = hero.speed;
|
||||||
|
|
||||||
|
// 构建技能表并注入运行时冷却字段 ccd
|
||||||
model.skills = {};
|
model.skills = {};
|
||||||
for (const key in hero.skills) {
|
for (const key in hero.skills) {
|
||||||
const skill = hero.skills[key];
|
const skill = hero.skills[key];
|
||||||
if (!skill) continue;
|
if (!skill) continue;
|
||||||
//用于增量 计算最终技能等级:英雄等级与技能初始等级均从1开始,需各减1抵消,故-2
|
// 最终技能等级 = 初始技能等级 + 英雄等级增量,且下限为 0
|
||||||
model.skills[skill.uuid] = { ...skill, lv: skill.lv + hero_lv - 2, ccd: skill.cd };
|
model.skills[skill.uuid] = { ...skill, lv: Math.max(0,skill.lv + hero_lv - 2), ccd: 0 };
|
||||||
}
|
}
|
||||||
|
// 缓存技能射程等派生数据,减少战斗帧内重复计算
|
||||||
model.updateSkillDistanceCache();
|
model.updateSkillDistanceCache();
|
||||||
|
|
||||||
// 初始化 buff/debuff 系统
|
// 初始化属性系统(buff/debuff 等动态属性容器)
|
||||||
model.initAttrs();
|
model.initAttrs();
|
||||||
|
|
||||||
|
// 将视图组件注册到实体,打通逻辑与表现
|
||||||
this.add(hv);
|
this.add(hv);
|
||||||
|
// 广播主角召唤事件,触发外部系统监听逻辑
|
||||||
oops.message.dispatchEvent(GameEvent.MasterCalled,{uuid:uuid})
|
oops.message.dispatchEvent(GameEvent.MasterCalled,{uuid:uuid})
|
||||||
|
|
||||||
|
// 初始化移动组件:方向、目标 X、站位基准 Y
|
||||||
const move = this.get(MoveComp);
|
const move = this.get(MoveComp);
|
||||||
move.direction = 1; // 向右移动
|
move.direction = 1;
|
||||||
move.targetX = resolveFormationTargetX(model.fac, model.type);
|
move.targetX = resolveFormationTargetX(model.fac, model.type);
|
||||||
move.baseY = dropToY;
|
move.baseY = dropToY;
|
||||||
move.moving = false;
|
move.moving = false;
|
||||||
|
|
||||||
|
// 依据下落距离自适应入场时长,保证手感稳定
|
||||||
const dropDistance = Math.abs(pos.y - dropToY);
|
const dropDistance = Math.abs(pos.y - dropToY);
|
||||||
const dropDuration = Math.max(0.18, Math.min(0.38, dropDistance / 1200));
|
const dropDuration = Math.max(0.18, Math.min(0.38, dropDistance / 1200));
|
||||||
|
|
||||||
|
// 停止旧动画后执行下落 tween,避免复用节点时动画叠加
|
||||||
Tween.stopAllByTarget(node);
|
Tween.stopAllByTarget(node);
|
||||||
tween(node)
|
tween(node)
|
||||||
.to(dropDuration, { position: v3(pos.x, dropToY, 0) })
|
.to(dropDuration, { position: v3(pos.x, dropToY, 0) })
|
||||||
.call(() => {
|
.call(() => {
|
||||||
if (!node || !node.isValid) return;
|
if (!node || !node.isValid) return;
|
||||||
|
// 落地后锁定最终位置,切换到落地完成状态
|
||||||
node.setPosition(pos.x, dropToY, 0);
|
node.setPosition(pos.x, dropToY, 0);
|
||||||
hv.playEnd("down");
|
hv.playEnd("down");
|
||||||
move.moving = true;
|
move.moving = true;
|
||||||
|
// 落地后再启用碰撞,避免空中阶段触发伤害结算
|
||||||
if (collider) {
|
if (collider) {
|
||||||
collider.enabled = true;
|
collider.enabled = true;
|
||||||
collider.group = BoxSet.HERO;
|
collider.group = BoxSet.HERO;
|
||||||
@@ -114,41 +143,54 @@ export class Hero extends ecs.Entity {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.start();
|
.start();
|
||||||
|
// 维护关卡内英雄数量统计
|
||||||
smc.vmdata.mission_data.hero_num++
|
smc.vmdata.mission_data.hero_num++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 重置入口:复用 destroy 的释放流程 */
|
||||||
reset() {
|
reset() {
|
||||||
// 注: 自定义释放逻辑,视图层实现 ecs.IComp 接口的 ecs 组件需要手动释放
|
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ecs.register('HeroLifecycleSystem')
|
/** 统一生命周期系统:按 fac 区分英雄与怪物并输出日志 */
|
||||||
export class HeroLifecycleSystem extends ecs.ComblockSystem
|
@ecs.register('BattleEntityLifecycleSystem')
|
||||||
|
export class BattleEntityLifecycleSystem extends ecs.ComblockSystem
|
||||||
implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem {
|
implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem {
|
||||||
|
|
||||||
|
/** 仅处理拥有 MoveComp 的实体 */
|
||||||
filter() {
|
filter() {
|
||||||
return ecs.allOf(MoveComp);
|
return ecs.allOf(MoveComp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 基于阵营生成日志名称 */
|
||||||
|
private resolveLabel(heroAttrs: HeroAttrsComp | null) {
|
||||||
|
if (!heroAttrs) return "未知";
|
||||||
|
if (heroAttrs.fac === FacSet.HERO) return "英雄";
|
||||||
|
if (heroAttrs.fac === FacSet.MON) return "怪物";
|
||||||
|
return "未知";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 实体进入世界时记录日志 */
|
||||||
entityEnter(e: ecs.Entity): void {
|
entityEnter(e: ecs.Entity): void {
|
||||||
// 英雄实体创建时的特殊处理
|
|
||||||
const heroAttrs = e.get(HeroAttrsComp);
|
const heroAttrs = e.get(HeroAttrsComp);
|
||||||
|
const label = this.resolveLabel(heroAttrs);
|
||||||
if (heroAttrs) {
|
if (heroAttrs) {
|
||||||
mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄进入世界: ${heroAttrs.hero_name}`);
|
mLogger.log(heroAttrs.debugMode, 'BattleEntityLifecycle', `${label}进入世界: ${heroAttrs.hero_name}`);
|
||||||
} else {
|
} else {
|
||||||
mLogger.log(true, 'HeroLifecycle', `英雄进入世界: 实体ID ${e.eid}`);
|
mLogger.log(true, 'BattleEntityLifecycle', `${label}进入世界: 实体ID ${e.eid}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 实体离开世界时记录日志 */
|
||||||
entityRemove(e: ecs.Entity): void {
|
entityRemove(e: ecs.Entity): void {
|
||||||
// 英雄实体销毁时的清理工作
|
|
||||||
const heroAttrs = e.get(HeroAttrsComp);
|
const heroAttrs = e.get(HeroAttrsComp);
|
||||||
|
const label = this.resolveLabel(heroAttrs);
|
||||||
if (heroAttrs) {
|
if (heroAttrs) {
|
||||||
mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄离开世界: ${heroAttrs.hero_name}`);
|
mLogger.log(heroAttrs.debugMode, 'BattleEntityLifecycle', `${label}离开世界: ${heroAttrs.hero_name}`);
|
||||||
} else {
|
} else {
|
||||||
mLogger.log(true, 'HeroLifecycle', `英雄离开世界: 实体ID ${e.eid}`);
|
mLogger.log(true, 'BattleEntityLifecycle', `${label}离开世界: 实体ID ${e.eid}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,8 +139,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
|||||||
return this.frost_end_time > 0
|
return this.frost_end_time > 0
|
||||||
}
|
}
|
||||||
getSkillLevel(skillId: number): number {
|
getSkillLevel(skillId: number): number {
|
||||||
if (!skillId) return 1;
|
if (!skillId) return 0;
|
||||||
return this.skills[skillId]?.lv ?? 1;
|
return this.skills[skillId]?.lv ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSkillIds(): number[] {
|
getSkillIds(): number[] {
|
||||||
|
|||||||
@@ -115,13 +115,12 @@ export class HeroViewComp extends CCComp {
|
|||||||
private initUINodes() {
|
private initUINodes() {
|
||||||
this.top_node = this.node.getChildByName("top");
|
this.top_node = this.node.getChildByName("top");
|
||||||
this.topOpacity = this.top_node.getComponent(UIOpacity) || this.top_node.addComponent(UIOpacity);
|
this.topOpacity = this.top_node.getComponent(UIOpacity) || this.top_node.addComponent(UIOpacity);
|
||||||
|
this.top_node.setPosition(0, 90+this.model.lv*10, 0);
|
||||||
this.topBasePos = this.top_node.position.clone();
|
this.topBasePos = this.top_node.position.clone();
|
||||||
const hpNode = this.top_node.getChildByName("hp");
|
const hpNode = this.top_node.getChildByName("hp");
|
||||||
if(this.model.fac==FacSet.HERO){
|
if(this.model.fac==FacSet.HERO){
|
||||||
hpNode.getChildByName("Bar").getComponent(Sprite).color=new Color("#2ECC71")
|
hpNode.getChildByName("Bar").getComponent(Sprite).color=new Color("#2ECC71")
|
||||||
}
|
}
|
||||||
// let hp_y = this.node.getComponent(UITransform).height+10;
|
|
||||||
// this.top_node.setPosition(0, hp_y, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -169,12 +168,11 @@ export class HeroViewComp extends CCComp {
|
|||||||
/** 显示护盾 */
|
/** 显示护盾 */
|
||||||
private show_shield(shield: number = 0, shield_max: number = 0) {
|
private show_shield(shield: number = 0, shield_max: number = 0) {
|
||||||
this.lastBarUpdateTime = Date.now() / 1000;
|
this.lastBarUpdateTime = Date.now() / 1000;
|
||||||
if(!this.top_node.active) return
|
|
||||||
let shield_progress = shield / shield_max;
|
let shield_progress = shield / shield_max;
|
||||||
this.node.getChildByName("shielded").active = shield > 0;
|
this.node.getChildByName("shielded").active = shield > 0;
|
||||||
this.top_node.getChildByName("shield").active = shield > 0;
|
this.top_node.getChildByName("shield").active = shield > 0;
|
||||||
this.top_node.getChildByName("shield").getComponent(ProgressBar).progress = shield_progress;
|
this.top_node.getChildByName("shield").getComponent(ProgressBar).progress = shield_progress;
|
||||||
|
this.setTopBarOpacity(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 显示血量 */
|
/** 显示血量 */
|
||||||
@@ -201,19 +199,24 @@ export class HeroViewComp extends CCComp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private isFullHp(): boolean {
|
private isFullHpAndNoShield(): boolean {
|
||||||
if (!this.model) return false;
|
if (!this.model) return false;
|
||||||
if (this.model.hp_max <= 0) return false;
|
if (this.model.hp_max <= 0) return false;
|
||||||
return this.model.hp >= this.model.hp_max;
|
const isFullHp = this.model.hp >= this.model.hp_max;
|
||||||
|
const noShield = this.model.shield <= 0;
|
||||||
|
return isFullHp && noShield;
|
||||||
}
|
}
|
||||||
|
|
||||||
private setTopBarOpacity(isActive: boolean) {
|
private setTopBarOpacity(isActive: boolean) {
|
||||||
if (!this.topOpacity || !this.topOpacity.isValid) return;
|
if (!this.top_node || !this.top_node.isValid) return;
|
||||||
if (isActive) {
|
if (this.topOpacity) {
|
||||||
this.topOpacity.opacity = this.barActiveOpacity;
|
this.topOpacity.opacity = this.barActiveOpacity;
|
||||||
|
}
|
||||||
|
if (isActive) {
|
||||||
|
this.top_node.active = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.topOpacity.opacity = this.isFullHp() ? this.barIdleOpacity : this.barActiveOpacity;
|
this.top_node.active = !this.isFullHpAndNoShield();
|
||||||
}
|
}
|
||||||
|
|
||||||
private activateTopBar() {
|
private activateTopBar() {
|
||||||
@@ -286,7 +289,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
// 起点设为怪物中心位置 + 20偏移
|
// 起点设为怪物中心位置 + 20偏移
|
||||||
let ny = this.node.position.y + halfHeight + 20;
|
let ny = this.node.position.y + halfHeight + 20;
|
||||||
let pos = v3(x, ny, 0);
|
let pos = v3(x, ny, 0);
|
||||||
Tooltip.load(pos, type, value, s_uuid, this.node.parent);
|
Tooltip.load(pos, type, value, s_uuid, this.node.parent, 1, this.model?.fac ?? FacSet.MON);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 护盾吸收提示 */
|
/** 护盾吸收提示 */
|
||||||
@@ -367,7 +370,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
|
|
||||||
health(hp: number = 0) {
|
health(hp: number = 0) {
|
||||||
// ✅ 仅显示特效和提示,不调用 hp_show()
|
// ✅ 仅显示特效和提示,不调用 hp_show()
|
||||||
if(hp<=99) return;
|
if(hp<=20) return;
|
||||||
this.heathed();
|
this.heathed();
|
||||||
this.hp_tip(TooltipTypes.health, hp.toFixed(0));
|
this.hp_tip(TooltipTypes.health, hp.toFixed(0));
|
||||||
this.lastBarUpdateTime = Date.now() / 1000;
|
this.lastBarUpdateTime = Date.now() / 1000;
|
||||||
|
|||||||
@@ -7,19 +7,26 @@ import { HeroInfo } from "../common/config/heroSet";
|
|||||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||||
import { HeroViewComp } from "./HeroViewComp";
|
import { HeroViewComp } from "./HeroViewComp";
|
||||||
import { MoveComp } from "./MoveComp";
|
import { MoveComp } from "./MoveComp";
|
||||||
import { mLogger } from "../common/Logger";
|
/** 怪物实体:负责怪物对象池复用、属性初始化、入场动画与回收 */
|
||||||
/** 角色实体 */
|
|
||||||
@ecs.register(`Monster`)
|
@ecs.register(`Monster`)
|
||||||
export class Monster extends ecs.Entity {
|
export class Monster extends ecs.Entity {
|
||||||
|
/** 怪物数据组件引用 */
|
||||||
HeroModel!: HeroAttrsComp;
|
HeroModel!: HeroAttrsComp;
|
||||||
|
/** 怪物表现组件引用 */
|
||||||
HeroView!: HeroViewComp;
|
HeroView!: HeroViewComp;
|
||||||
|
/** 怪物移动组件引用 */
|
||||||
MonMove!: MoveComp;
|
MonMove!: MoveComp;
|
||||||
private debugMode: boolean = false; // 是否启用调试模式
|
/** 调试开关,控制生命周期日志输出 */
|
||||||
|
private debugMode: boolean = false;
|
||||||
|
|
||||||
// 多键对象池:Map<prefabPath, NodePool>
|
/** 多键对象池:key 为 prefab 路径,value 为对应节点池 */
|
||||||
static pools: Map<string, NodePool> = new Map();
|
static pools: Map<string, NodePool> = new Map();
|
||||||
|
/** 单个路径的池容量上限 */
|
||||||
static readonly MAX_POOL_SIZE: number = 12;
|
static readonly MAX_POOL_SIZE: number = 12;
|
||||||
|
/** 所有路径合计池容量上限 */
|
||||||
static readonly MAX_POOL_TOTAL: number = 60;
|
static readonly MAX_POOL_TOTAL: number = 60;
|
||||||
|
|
||||||
|
/** 计算当前所有对象池节点总量 */
|
||||||
private static totalPoolSize(): number {
|
private static totalPoolSize(): number {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
this.pools.forEach((pool) => {
|
this.pools.forEach((pool) => {
|
||||||
@@ -28,6 +35,7 @@ export class Monster extends ecs.Entity {
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 从指定路径对象池取可用节点,取不到返回 null */
|
||||||
static getFromPool(path: string): Node | null {
|
static getFromPool(path: string): Node | null {
|
||||||
if (this.pools.has(path)) {
|
if (this.pools.has(path)) {
|
||||||
const pool = this.pools.get(path)!;
|
const pool = this.pools.get(path)!;
|
||||||
@@ -41,6 +49,7 @@ export class Monster extends ecs.Entity {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 节点回收到对象池,超上限则直接销毁 */
|
||||||
static putToPool(path: string, node: Node) {
|
static putToPool(path: string, node: Node) {
|
||||||
if (!node || !node.isValid) return;
|
if (!node || !node.isValid) return;
|
||||||
if (!this.pools.has(path)) {
|
if (!this.pools.has(path)) {
|
||||||
@@ -54,6 +63,7 @@ export class Monster extends ecs.Entity {
|
|||||||
pool.put(node);
|
pool.put(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 清空所有对象池并销毁池内节点 */
|
||||||
static clearPools() {
|
static clearPools() {
|
||||||
this.pools.forEach((pool) => {
|
this.pools.forEach((pool) => {
|
||||||
while (pool.size() > 0) {
|
while (pool.size() > 0) {
|
||||||
@@ -67,6 +77,7 @@ export class Monster extends ecs.Entity {
|
|||||||
this.pools.clear();
|
this.pools.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 获取对象池统计信息,用于调试与容量监控 */
|
||||||
static getPoolStats() {
|
static getPoolStats() {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
this.pools.forEach((pool) => {
|
this.pools.forEach((pool) => {
|
||||||
@@ -80,6 +91,7 @@ export class Monster extends ecs.Entity {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 注册实体必需组件:移动 + 属性 */
|
||||||
protected init() {
|
protected init() {
|
||||||
this.addComponents<ecs.Comp>(
|
this.addComponents<ecs.Comp>(
|
||||||
MoveComp,
|
MoveComp,
|
||||||
@@ -87,8 +99,9 @@ export class Monster extends ecs.Entity {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 销毁实体:优先回收节点,然后释放组件 */
|
||||||
destroy(): void {
|
destroy(): void {
|
||||||
// 回收节点到对象池
|
// 按英雄路径回收到对象池,提升高频刷怪性能
|
||||||
const model = this.get(HeroAttrsComp);
|
const model = this.get(HeroAttrsComp);
|
||||||
const view = this.get(HeroViewComp);
|
const view = this.get(HeroViewComp);
|
||||||
if (model && view && view.node && view.node.isValid) {
|
if (model && view && view.node && view.node.isValid) {
|
||||||
@@ -96,28 +109,39 @@ export class Monster extends ecs.Entity {
|
|||||||
Monster.putToPool(path, view.node);
|
Monster.putToPool(path, view.node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 手动移除组件,避免 ecs 引用滞留
|
||||||
this.remove(HeroViewComp);
|
this.remove(HeroViewComp);
|
||||||
this.remove(HeroAttrsComp);
|
this.remove(HeroAttrsComp);
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 加载角色 */
|
/**
|
||||||
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, is_boss:boolean=false, dropToY:number = pos.y) {
|
* 加载并初始化怪物
|
||||||
|
* 1) 优先对象池复用节点,减少实例化开销
|
||||||
|
* 2) 初始化表现、属性、技能与阵营
|
||||||
|
* 3) 播放下落入场并在落地后启用碰撞与移动
|
||||||
|
*/
|
||||||
|
load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001, is_boss:boolean=false, dropToY:number = pos.y,mon_lv:number=1) {
|
||||||
|
// 怪物默认朝左,表现缩放固定为负向
|
||||||
scale=-1
|
scale=-1
|
||||||
|
// 当前怪物尺寸固定,保留变量便于后续扩展
|
||||||
let size=1
|
let size=1
|
||||||
var scene = smc.map.MapView.scene;
|
var scene = smc.map.MapView.scene;
|
||||||
|
// 根据配置读取怪物预制体路径
|
||||||
var path = "game/heros/"+HeroInfo[uuid].path;
|
var path = "game/heros/"+HeroInfo[uuid].path;
|
||||||
|
|
||||||
// 尝试从池中获取
|
// 优先从对象池取节点,未命中时再实例化
|
||||||
let node = Monster.getFromPool(path);
|
let node = Monster.getFromPool(path);
|
||||||
if (!node) {
|
if (!node) {
|
||||||
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
||||||
node = instantiate(prefab);
|
node = instantiate(prefab);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 统一挂到实体显示层 HERO 节点下
|
||||||
node.parent = scene.entityLayer!.node!.getChildByName("HERO")!;
|
node.parent = scene.entityLayer!.node!.getChildByName("HERO")!;
|
||||||
var view = node.getComponent(HeroViewComp)!;
|
var view = node.getComponent(HeroViewComp)!;
|
||||||
const collider = node.getComponent(BoxCollider2D);
|
const collider = node.getComponent(BoxCollider2D);
|
||||||
|
// 入场期间关闭碰撞,防止下落时提前参与战斗
|
||||||
if (collider) {
|
if (collider) {
|
||||||
collider.enabled = false;
|
collider.enabled = false;
|
||||||
}
|
}
|
||||||
@@ -125,54 +149,64 @@ export class Monster extends ecs.Entity {
|
|||||||
node.setScale(size*node.scale.x,size*node.scale.y);
|
node.setScale(size*node.scale.x,size*node.scale.y);
|
||||||
node.setPosition(pos)
|
node.setPosition(pos)
|
||||||
const model = this.get(HeroAttrsComp);
|
const model = this.get(HeroAttrsComp);
|
||||||
let hero = HeroInfo[uuid]; // 共用英雄数据
|
// 从配置表获取怪物静态数据
|
||||||
// 设置 View 层属性(表现相关)
|
let hero = HeroInfo[uuid];
|
||||||
|
// 视图层参数:朝向与碰撞阵营
|
||||||
view.scale = scale;
|
view.scale = scale;
|
||||||
view.box_group = BoxSet.MONSTER;
|
view.box_group = BoxSet.MONSTER;
|
||||||
// 设置 Model 层属性 基础属性
|
// 模型层参数:身份、阵营、基础数值
|
||||||
model.hero_uuid = uuid;
|
model.hero_uuid = uuid;
|
||||||
model.hero_name = hero.name;
|
model.hero_name = hero.name;
|
||||||
model.hp = model.hp_max = hero.hp;
|
model.hp = model.hp_max = hero.hp;
|
||||||
model.ap = hero.ap;
|
model.ap = hero.ap;
|
||||||
model.speed = hero.speed; // 使用成长后的速度
|
model.speed = hero.speed;
|
||||||
model.type = hero.type;
|
model.type = hero.type;
|
||||||
model.fac = FacSet.MON;
|
model.fac = FacSet.MON;
|
||||||
|
// 标记是否 Boss,非 Boss 默认记作杂兵
|
||||||
model.is_boss =is_boss
|
model.is_boss =is_boss
|
||||||
if(!model.is_boss){
|
if(!model.is_boss){
|
||||||
model.is_kalami = true;
|
model.is_kalami = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 构建技能表并注入运行时冷却字段 ccd
|
||||||
model.skills = {};
|
model.skills = {};
|
||||||
for (const key in hero.skills) {
|
for (const key in hero.skills) {
|
||||||
const skill = hero.skills[key];
|
const skill = hero.skills[key];
|
||||||
if (!skill) continue;
|
if (!skill) continue;
|
||||||
model.skills[skill.uuid] = { ...skill, ccd: skill.cd };
|
// 最终技能等级 = 初始技能等级 + 怪物等级增量,且下限为 0
|
||||||
|
model.skills[skill.uuid] = { ...skill, lv: Math.max(0,skill.lv + mon_lv - 2), ccd: 0 };
|
||||||
}
|
}
|
||||||
|
// 缓存技能射程等派生数据,减少战斗帧内重复计算
|
||||||
model.updateSkillDistanceCache();
|
model.updateSkillDistanceCache();
|
||||||
//根据刷怪控制脚本对ap和hp进行加强
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 注册视图组件并重置对象池复用状态
|
||||||
this.add(view);
|
this.add(view);
|
||||||
// 重置视图状态(对象池复用时必须)
|
|
||||||
view.init();
|
view.init();
|
||||||
|
// 广播怪物加载事件,供刷怪与战斗系统联动
|
||||||
oops.message.dispatchEvent("monster_load",this)
|
oops.message.dispatchEvent("monster_load",this)
|
||||||
// 初始化移动参数,包括线路和生成顺序
|
// 初始化移动参数:方向、目标 X、站位基准 Y
|
||||||
const move = this.get(MoveComp);
|
const move = this.get(MoveComp);
|
||||||
move.reset();
|
move.reset();
|
||||||
move.direction = -1; // 向左移动
|
move.direction = -1;
|
||||||
move.targetX = Math.max(-320, Math.min(320, pos.x));
|
move.targetX = Math.max(-320, Math.min(320, pos.x));
|
||||||
move.baseY = dropToY;
|
move.baseY = dropToY;
|
||||||
move.moving = false;
|
move.moving = false;
|
||||||
|
|
||||||
|
// 依据下落距离自适应入场时长,确保观感一致
|
||||||
const dropDistance = Math.abs(pos.y - dropToY);
|
const dropDistance = Math.abs(pos.y - dropToY);
|
||||||
const dropDuration = Math.max(0.18, Math.min(0.38, dropDistance / 1200));
|
const dropDuration = Math.max(0.18, Math.min(0.38, dropDistance / 1200));
|
||||||
|
|
||||||
|
// 停止旧动画后执行下落 tween,避免复用节点时动画叠加
|
||||||
Tween.stopAllByTarget(node);
|
Tween.stopAllByTarget(node);
|
||||||
tween(node)
|
tween(node)
|
||||||
.to(dropDuration, { position: v3(pos.x, dropToY, 0) })
|
.to(dropDuration, { position: v3(pos.x, dropToY, 0) })
|
||||||
.call(() => {
|
.call(() => {
|
||||||
if (!node || !node.isValid) return;
|
if (!node || !node.isValid) return;
|
||||||
|
// 落地后锁定最终位置,切换到落地完成状态
|
||||||
node.setPosition(pos.x, dropToY, 0);
|
node.setPosition(pos.x, dropToY, 0);
|
||||||
view.playEnd("down");
|
view.playEnd("down");
|
||||||
move.moving = true;
|
move.moving = true;
|
||||||
|
// 落地后启用怪物碰撞分组
|
||||||
if (collider) {
|
if (collider) {
|
||||||
collider.enabled = true;
|
collider.enabled = true;
|
||||||
collider.group = BoxSet.MONSTER;
|
collider.group = BoxSet.MONSTER;
|
||||||
@@ -180,42 +214,14 @@ export class Monster extends ecs.Entity {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.start();
|
.start();
|
||||||
|
// 维护关卡内怪物数量统计
|
||||||
smc.vmdata.mission_data.mon_num++
|
smc.vmdata.mission_data.mon_num++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** 重置入口:复用 destroy 的释放流程 */
|
||||||
reset() {
|
reset() {
|
||||||
// 注: 自定义释放逻辑,视图层实现 ecs.IComp 接口的 ecs 组件需要手动释放
|
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ecs.register('MonLifecycleSystem')
|
|
||||||
export class MonLifecycleSystem extends ecs.ComblockSystem
|
|
||||||
implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem {
|
|
||||||
debugMode: boolean = false; // 是否启用调试模式
|
|
||||||
|
|
||||||
filter() {
|
|
||||||
return ecs.allOf(MoveComp);
|
|
||||||
}
|
|
||||||
|
|
||||||
entityEnter(e: ecs.Entity): void {
|
|
||||||
// 怪物实体创建时的特殊处理
|
|
||||||
const heroAttrs = e.get(HeroAttrsComp);
|
|
||||||
if (heroAttrs) {
|
|
||||||
mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物进入世界: ${heroAttrs.hero_name}`);
|
|
||||||
} else {
|
|
||||||
mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物进入世界: 实体ID ${e.eid}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
entityRemove(e: ecs.Entity): void {
|
|
||||||
// 怪物实体销毁时的清理工作
|
|
||||||
const heroAttrs = e.get(HeroAttrsComp);
|
|
||||||
if (heroAttrs) {
|
|
||||||
mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物离开世界: ${heroAttrs.hero_name}`);
|
|
||||||
} else {
|
|
||||||
mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物离开世界: 实体ID ${e.eid}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -204,10 +204,12 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
|||||||
const model = target.ent.get(HeroAttrsComp);
|
const model = target.ent.get(HeroAttrsComp);
|
||||||
if (!model || model.is_dead) continue;
|
if (!model || model.is_dead) continue;
|
||||||
if (kind === SkillKind.Heal && sAp !== 0) {
|
if (kind === SkillKind.Heal && sAp !== 0) {
|
||||||
const addHp = model.add_hp(sAp*_cAttrsComp.ap);
|
const addHp = Math.floor(sAp*_cAttrsComp.ap/100);//技能的ap是百分值 需要/100
|
||||||
|
model.add_hp(addHp);
|
||||||
target.health(addHp);
|
target.health(addHp);
|
||||||
} else if (kind === SkillKind.Shield && sAp !== 0) {
|
} else if (kind === SkillKind.Shield && sAp !== 0) {
|
||||||
model.add_shield(sAp*_cAttrsComp.ap);
|
const addShield = Math.floor(sAp*_cAttrsComp.ap/100);
|
||||||
|
model.add_shield(addShield);
|
||||||
}
|
}
|
||||||
if (!config.buffs || config.buffs.length === 0) continue;
|
if (!config.buffs || config.buffs.length === 0) continue;
|
||||||
for (const buffConf of config.buffs) {
|
for (const buffConf of config.buffs) {
|
||||||
|
|||||||
@@ -18,17 +18,19 @@ export const MonType = {
|
|||||||
AP: 0, // 近战高功
|
AP: 0, // 近战高功
|
||||||
SPEED: 1, // 高速贴近
|
SPEED: 1, // 高速贴近
|
||||||
HP: 2, // 高血皮厚
|
HP: 2, // 高血皮厚
|
||||||
//远程攻击
|
RANGED: 3, // 射手
|
||||||
|
MAGE: 4, // 远程魔法
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
export const MonList = {
|
export const MonList = {
|
||||||
[MonType.AP]: [6001,6002], // 近战高功
|
[MonType.AP]: [6001,6003], // 近战高功
|
||||||
[MonType.SPEED]: [6003], // 高速贴近
|
[MonType.SPEED]: [6002], // 高速贴近
|
||||||
[MonType.HP]: [6009], // 高血皮厚
|
[MonType.HP]: [6002], // 高血皮厚
|
||||||
//远程攻击
|
[MonType.RANGED]: [6004], // 射手
|
||||||
|
[MonType.MAGE]: [6005], // 远程魔法
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
export const BossList = [5701]
|
export const BossList = [6006]
|
||||||
export const StageDuration = 30
|
export const StageDuration = 30
|
||||||
export const SpawnBaseCd = 1.6
|
export const SpawnBaseCd = 1.6
|
||||||
export const SpawnMinCd = 0.5
|
export const SpawnMinCd = 0.5
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export class SDataCom extends ecs.Comp {
|
|||||||
group:BoxSet=BoxSet.HERO
|
group:BoxSet=BoxSet.HERO
|
||||||
fac: number = 0; // 0:hero 1:monster
|
fac: number = 0; // 0:hero 1:monster
|
||||||
s_uuid:number=0
|
s_uuid:number=0
|
||||||
skill_lv:number=1
|
skill_lv:number=0
|
||||||
ext_dmg:number=0 //额外伤害
|
ext_dmg:number=0 //额外伤害
|
||||||
dmg_ratio:number=1 //伤害比例
|
dmg_ratio:number=1 //伤害比例
|
||||||
hit_count:number=0 //击中数量
|
hit_count:number=0 //击中数量
|
||||||
@@ -21,7 +21,7 @@ export class SDataCom extends ecs.Comp {
|
|||||||
this.group=BoxSet.HERO
|
this.group=BoxSet.HERO
|
||||||
this.fac=0
|
this.fac=0
|
||||||
this.s_uuid=0
|
this.s_uuid=0
|
||||||
this.skill_lv=1
|
this.skill_lv=0
|
||||||
this.casterEid = -1;
|
this.casterEid = -1;
|
||||||
this.hit_count=0
|
this.hit_count=0
|
||||||
this.max_hit_count=0
|
this.max_hit_count=0
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ export class Skill extends ecs.Entity {
|
|||||||
this.addComponents<SMoveDataComp>(SMoveDataComp);
|
this.addComponents<SMoveDataComp>(SMoveDataComp);
|
||||||
}
|
}
|
||||||
load(startPos: Vec3, parent: Node, s_uuid: number, targetPos: Vec3,
|
load(startPos: Vec3, parent: Node, s_uuid: number, targetPos: Vec3,
|
||||||
caster:HeroViewComp,cAttrsComp:HeroAttrsComp, skill_lv:number=1, ext_dmg:number=0) {
|
caster:HeroViewComp,cAttrsComp:HeroAttrsComp, skill_lv:number=0, ext_dmg:number=0) {
|
||||||
const config = SkillSet[s_uuid];
|
const config = SkillSet[s_uuid];
|
||||||
if (!config) {
|
if (!config) {
|
||||||
mLogger.error(this.debugMode, 'Skill', "[Skill] 技能配置不存在:", s_uuid);
|
mLogger.error(this.debugMode, 'Skill', "[Skill] 技能配置不存在:", s_uuid);
|
||||||
@@ -205,17 +205,17 @@ export class Skill extends ecs.Entity {
|
|||||||
sDataCom.casterEid=caster.ent.eid
|
sDataCom.casterEid=caster.ent.eid
|
||||||
sDataCom.Attrs = {};
|
sDataCom.Attrs = {};
|
||||||
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
|
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
|
||||||
const sCrt = (config.crt ?? 0)+SUp.crt*skill_lv;
|
const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv);
|
||||||
const sFrz = (config.frz ?? 0)+SUp.frz*skill_lv;
|
const sFrz = (config.frz ?? 0)+(SUp.frz*skill_lv);
|
||||||
const sBck = (config.bck ?? 0)+SUp.bck*skill_lv;
|
const sBck = (config.bck ?? 0)+(SUp.bck*skill_lv);
|
||||||
const sAp =config.ap+SUp.ap*skill_lv;
|
const sAp =config.ap+(SUp.ap*skill_lv);
|
||||||
const sHit=config.hit_count+SUp.hit_count*skill_lv + cAttrsComp.puncture
|
const sHit=config.hit_count+(SUp.hit_count*skill_lv) + cAttrsComp.puncture
|
||||||
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp);
|
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100,不然会出现ap为90%变0
|
||||||
sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt;
|
sDataCom.Attrs[Attrs.critical] = cAttrsComp.critical + sCrt;
|
||||||
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
|
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.freeze_chance + sFrz;
|
||||||
sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;
|
sDataCom.Attrs[Attrs.back_chance] = cAttrsComp.back_chance + sBck;
|
||||||
sDataCom.s_uuid=s_uuid
|
sDataCom.s_uuid=s_uuid
|
||||||
sDataCom.skill_lv = Math.max(1, skill_lv);
|
sDataCom.skill_lv = Math.max(0, skill_lv);
|
||||||
sDataCom.fac=cAttrsComp.fac
|
sDataCom.fac=cAttrsComp.fac
|
||||||
sDataCom.ext_dmg=ext_dmg
|
sDataCom.ext_dmg=ext_dmg
|
||||||
sDataCom.hit_count = 0
|
sDataCom.hit_count = 0
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
|
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
|
||||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||||
import { BoxSet } from "../common/config/GameSet";
|
import { BoxSet, FacSet } from "../common/config/GameSet";
|
||||||
import { SkillSet } from "../common/config/SkillSet";
|
import { SkillSet } from "../common/config/SkillSet";
|
||||||
import { smc } from "../common/SingletonModuleComp";
|
import { smc } from "../common/SingletonModuleComp";
|
||||||
import { TooltipCom } from "./TooltipCom";
|
import { TooltipCom } from "./TooltipCom";
|
||||||
@@ -60,7 +60,7 @@ export class Tooltip extends ecs.Entity {
|
|||||||
this.remove(TooltipCom);
|
this.remove(TooltipCom);
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
static load(pos: Vec3 = Vec3.ZERO,type:number=1,vaule:string="",s_uuid:number=1001,parent:any=null,cd:number=1) {
|
static load(pos: Vec3 = Vec3.ZERO,type:number=1,vaule:string="",s_uuid:number=1001,parent:any=null,cd:number=1,fac:number=FacSet.MON) {
|
||||||
let node: Node;
|
let node: Node;
|
||||||
if (Tooltip.pool.size() > 0) {
|
if (Tooltip.pool.size() > 0) {
|
||||||
node = Tooltip.pool.get()!;
|
node = Tooltip.pool.get()!;
|
||||||
@@ -75,7 +75,7 @@ export class Tooltip extends ecs.Entity {
|
|||||||
node.active = true;
|
node.active = true;
|
||||||
|
|
||||||
var sv = node.getComponent(TooltipCom)!;
|
var sv = node.getComponent(TooltipCom)!;
|
||||||
sv.init(type, vaule, s_uuid);
|
sv.init(type, vaule, s_uuid, fac);
|
||||||
|
|
||||||
// this.add(sv); // 不要添加到单例实体上,否则会覆盖或导致单例被销毁
|
// this.add(sv); // 不要添加到单例实体上,否则会覆盖或导致单例被销毁
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { _decorator, Collider2D, Contact2DType, v3, IPhysics2DContact, Vec3, twe
|
|||||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||||
import { SkillSet } from "../common/config/SkillSet";
|
import { SkillSet } from "../common/config/SkillSet";
|
||||||
import { TooltipTypes } from "../common/config/GameSet";
|
import { FacSet, TooltipTypes } from "../common/config/GameSet";
|
||||||
import { Tooltip } from "./Tooltip";
|
import { Tooltip } from "./Tooltip";
|
||||||
|
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
@@ -14,6 +14,7 @@ export class TooltipCom extends CCComp {
|
|||||||
stype: number = 1; // 1:减少生命值,2:增加生命值,3:技能图标
|
stype: number = 1; // 1:减少生命值,2:增加生命值,3:技能图标
|
||||||
value: string = "";
|
value: string = "";
|
||||||
s_uuid: number = 1001;
|
s_uuid: number = 1001;
|
||||||
|
fac: number = FacSet.MON;
|
||||||
|
|
||||||
// 动画参数配置
|
// 动画参数配置
|
||||||
private readonly popDuration = 0.15;
|
private readonly popDuration = 0.15;
|
||||||
@@ -28,10 +29,11 @@ export class TooltipCom extends CCComp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 初始化并播放动画 */
|
/** 初始化并播放动画 */
|
||||||
init(type: number, value: string, uuid: number) {
|
init(type: number, value: string, uuid: number, fac: number = FacSet.MON) {
|
||||||
this.stype = type;
|
this.stype = type;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.s_uuid = uuid;
|
this.s_uuid = uuid;
|
||||||
|
this.fac = fac;
|
||||||
|
|
||||||
// 初始化或获取 UIOpacity 组件
|
// 初始化或获取 UIOpacity 组件
|
||||||
this._uiOpacity = this.node.getComponent(UIOpacity);
|
this._uiOpacity = this.node.getComponent(UIOpacity);
|
||||||
@@ -76,7 +78,7 @@ export class TooltipCom extends CCComp {
|
|||||||
case TooltipTypes.life: // 普通伤害
|
case TooltipTypes.life: // 普通伤害
|
||||||
this.node.setPosition(v3(this.node.position.x + offsetX, currentY));
|
this.node.setPosition(v3(this.node.position.x + offsetX, currentY));
|
||||||
this.node.setSiblingIndex(topSiblingIndex);
|
this.node.setSiblingIndex(topSiblingIndex);
|
||||||
this.setupLabel("loss_life", "hp", this.value);
|
this.setupLabel(this.fac === FacSet.HERO ? "hloss" : "loss_life", "hp", this.value);
|
||||||
scaleMax = 1.5;
|
scaleMax = 1.5;
|
||||||
break;
|
break;
|
||||||
case TooltipTypes.health: // 治疗
|
case TooltipTypes.health: // 治疗
|
||||||
|
|||||||
Reference in New Issue
Block a user