Compare commits
16 Commits
3f73669ba4
...
card0515
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50f43c227a | ||
|
|
9c2c0a1621 | ||
|
|
b12270be66 | ||
|
|
d926c08582 | ||
|
|
10ab03b871 | ||
|
|
7dd5257fd8 | ||
|
|
b0d752ab18 | ||
|
|
4460c1aaf2 | ||
|
|
092d0e4371 | ||
|
|
8fca560efd | ||
|
|
44ce6cd30c | ||
|
|
3ea1a4d44c | ||
|
|
82adaf4069 | ||
|
|
7aa8a47a65 | ||
|
|
488b1632ef | ||
|
|
85ab6b0507 |
File diff suppressed because it is too large
Load Diff
@@ -1,165 +0,0 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "dead",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 45,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 0.37777777777777777,
|
||||
"_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.022222222222222223,
|
||||
0.044444444444444446,
|
||||
0.06666666666666667,
|
||||
0.08888888888888889,
|
||||
0.1111111111111111,
|
||||
0.13333333333333333,
|
||||
0.15555555555555556,
|
||||
0.17777777777777778,
|
||||
0.2,
|
||||
0.2222222222222222,
|
||||
0.24444444444444444,
|
||||
0.26666666666666666,
|
||||
0.28888888888888886,
|
||||
0.3111111111111111,
|
||||
0.3333333333333333,
|
||||
0.35555555555555557
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c0540",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@2c693",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@dd835",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@3dbff",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bc740",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1be63",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@785a5",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@ab085",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@df057",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@07942",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@3d5cc",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1e82b",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@b780c",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bb712",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@8dd96",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@53ccb",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bef27",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||
"enabled": false,
|
||||
"refClip": null
|
||||
}
|
||||
]
|
||||
@@ -1,167 +0,0 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "start",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 45,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 0.4,
|
||||
"_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": "Fx08_00"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.ComponentPath",
|
||||
"component": "cc.Sprite"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.ObjectCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.022222222222222223,
|
||||
0.044444444444444446,
|
||||
0.06666666666666667,
|
||||
0.08888888888888889,
|
||||
0.1111111111111111,
|
||||
0.13333333333333333,
|
||||
0.15555555555555556,
|
||||
0.17777777777777778,
|
||||
0.2,
|
||||
0.2222222222222222,
|
||||
0.24444444444444444,
|
||||
0.26666666666666666,
|
||||
0.28888888888888886,
|
||||
0.3111111111111111,
|
||||
0.3333333333333333,
|
||||
0.35555555555555557,
|
||||
0.37777777777777777
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c0540",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@2c693",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@dd835",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@3dbff",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bc740",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1be63",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@785a5",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@ab085",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@df057",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@07942",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@3d5cc",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1e82b",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@b780c",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bb712",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@8dd96",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@53ccb",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bef27",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
null
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||
"enabled": false,
|
||||
"refClip": null
|
||||
}
|
||||
]
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"ver": "2.0.3",
|
||||
"importer": "animation-clip",
|
||||
"imported": true,
|
||||
"uuid": "9b809af9-120e-4683-a90a-5fecbd4e1ebd",
|
||||
"files": [
|
||||
".cconb"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"name": "start"
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"ver": "2.0.3",
|
||||
"importer": "animation-clip",
|
||||
"imported": true,
|
||||
"uuid": "67419693-8fea-48df-a2f4-d52e993932c0",
|
||||
"files": [
|
||||
".cconb"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"name": "buff_wind"
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "buff_wind",
|
||||
"_name": "stun",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 18,
|
||||
"sample": 20,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"wrapMode": 2,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 0.5555555555555556,
|
||||
"_duration": 0.45,
|
||||
"_hash": 500763545,
|
||||
"_tracks": [
|
||||
{
|
||||
@@ -69,55 +69,50 @@
|
||||
"__type__": "cc.ObjectCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.05555555555555555,
|
||||
0.1111111111111111,
|
||||
0.16666666666666666,
|
||||
0.2222222222222222,
|
||||
0.2777777777777778,
|
||||
0.3333333333333333,
|
||||
0.3888888888888889,
|
||||
0.4444444444444444,
|
||||
0.5
|
||||
0.05,
|
||||
0.1,
|
||||
0.15,
|
||||
0.2,
|
||||
0.25,
|
||||
0.3,
|
||||
0.35,
|
||||
0.4
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1069b",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@32458",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@5e490",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@770ee",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@33f1e",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bad49",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@71255",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c9790",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@4a25e",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@9eaf3",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@32458",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@3f6a9",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@770ee",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bf2fe",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bad49",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
{
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c9790",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@eab68",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
}
|
||||
]
|
||||
@@ -2,12 +2,12 @@
|
||||
"ver": "2.0.3",
|
||||
"importer": "animation-clip",
|
||||
"imported": true,
|
||||
"uuid": "f6fa875d-2465-4e3b-8f4d-52d2ee43481d",
|
||||
"uuid": "f069198d-2c19-4ebc-bd5f-66a3138b914f",
|
||||
"files": [
|
||||
".cconb"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"name": "dead"
|
||||
"name": "stun"
|
||||
}
|
||||
}
|
||||
@@ -7,11 +7,11 @@
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 12,
|
||||
"sample": 30,
|
||||
"speed": 1,
|
||||
"wrapMode": 1,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 0.4166666666666667,
|
||||
"_duration": 0.16666666666666666,
|
||||
"_hash": 500763545,
|
||||
"_tracks": [
|
||||
{
|
||||
@@ -69,10 +69,10 @@
|
||||
"__type__": "cc.ObjectCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.08333333333333333,
|
||||
0.16666666666666666,
|
||||
0.25,
|
||||
0.3333333333333333
|
||||
0.03333333333333333,
|
||||
0.06666666666666667,
|
||||
0.1,
|
||||
0.13333333333333333
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "311c4048-f871-4f0d-a1e6-c1d82aba4a42",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "buff_wind"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "buff_wind",
|
||||
"_name": "stun",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_native": "",
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "buff_wind",
|
||||
"_name": "stun",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": null,
|
||||
@@ -87,7 +87,7 @@
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"y": 85,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -100,7 +100,7 @@
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1.5,
|
||||
"y": 0.8,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
@@ -127,8 +127,8 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 145,
|
||||
"height": 105
|
||||
"width": 113,
|
||||
"height": 50
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
@@ -164,7 +164,7 @@
|
||||
"a": 206
|
||||
},
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
|
||||
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@1069b",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
"_type": 1,
|
||||
@@ -245,12 +245,12 @@
|
||||
"playOnLoad": true,
|
||||
"_clips": [
|
||||
{
|
||||
"__uuid__": "67419693-8fea-48df-a2f4-d52e993932c0",
|
||||
"__uuid__": "f069198d-2c19-4ebc-bd5f-66a3138b914f",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
}
|
||||
],
|
||||
"_defaultClip": {
|
||||
"__uuid__": "67419693-8fea-48df-a2f4-d52e993932c0",
|
||||
"__uuid__": "f069198d-2c19-4ebc-bd5f-66a3138b914f",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
},
|
||||
"_id": ""
|
||||
@@ -2,12 +2,12 @@
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "91d53413-e69c-48fd-8553-d01cbc341f4a",
|
||||
"uuid": "c0e8071a-4bba-45fe-b712-751274ce67d8",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "start"
|
||||
"syncNodeName": "stun"
|
||||
}
|
||||
}
|
||||
@@ -29,18 +29,15 @@
|
||||
},
|
||||
{
|
||||
"__id__": 10
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 14
|
||||
"__id__": 12
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 6.112,
|
||||
"y": 45.573,
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -68,7 +65,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Node",
|
||||
"_name": "skill",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -90,7 +87,7 @@
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 30,
|
||||
"y": -60,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -102,8 +99,8 @@
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0.65,
|
||||
"y": 0.65,
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
@@ -130,19 +127,19 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 127,
|
||||
"height": 127
|
||||
"width": 228,
|
||||
"height": 207
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
"y": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "ddhDbko4FLmKZGY46brX7z"
|
||||
"fileId": "b4sNQPJWFKha7x75SWXmRj"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
@@ -166,25 +163,31 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_spriteFrame": null,
|
||||
"_type": 0,
|
||||
"_fillType": 0,
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23@a16b8",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
"_type": 1,
|
||||
"_fillType": 1,
|
||||
"_sizeMode": 1,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"_fillStart": 0,
|
||||
"_fillRange": 0,
|
||||
"_fillStart": 0.2,
|
||||
"_fillRange": 1,
|
||||
"_isTrimmedMode": true,
|
||||
"_useGrayscale": false,
|
||||
"_atlas": null,
|
||||
"_useGrayscale": true,
|
||||
"_atlas": {
|
||||
"__uuid__": "2423272e-e63b-4736-b15b-30b40cf98a23",
|
||||
"__expectedType__": "cc.SpriteAtlas"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "c3vPZUzCRINL3sICnCZKIr"
|
||||
"fileId": "9a+65VIghBm4HQxuHPQ/mg"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
@@ -194,7 +197,7 @@
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "feOW1uSctLKYCw3esMiuox",
|
||||
"fileId": "7a5LvbdlxEc6FKa7cun2oB",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
@@ -213,19 +216,19 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 104,
|
||||
"height": 75
|
||||
"width": 80,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
"y": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "a7pn5tzA1BSI1AfdpVsHh7"
|
||||
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Animation",
|
||||
@@ -242,37 +245,19 @@
|
||||
"playOnLoad": true,
|
||||
"_clips": [
|
||||
{
|
||||
"__uuid__": "f6fa875d-2465-4e3b-8f4d-52d2ee43481d",
|
||||
"__uuid__": "11f930a0-c09e-48e3-9616-c209909363a2",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
}
|
||||
],
|
||||
"_defaultClip": {
|
||||
"__uuid__": "f6fa875d-2465-4e3b-8f4d-52d2ee43481d",
|
||||
"__uuid__": "11f930a0-c09e-48e3-9616-c209909363a2",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "63z5ZyjTNKYbn+kEVB1s3W"
|
||||
},
|
||||
{
|
||||
"__type__": "0f3c4JhFbFO2rEFqBJJ7hFv",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 13
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "32SLcINL1JHZ+vIyextzaC"
|
||||
"fileId": "c6LOemuvJKyYCqlF/yUJcr"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
@@ -282,7 +267,7 @@
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "cfqCWnxbFLNoQMedQXsav3",
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": null,
|
||||
"targetOverrides": null
|
||||
}
|
||||
|
||||
@@ -1,13 +1 @@
|
||||
{
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "97881732-3eb6-4ca6-b533-69b1df110ef3",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "dead"
|
||||
}
|
||||
}
|
||||
{"ver":"1.1.50","importer":"prefab","imported":true,"uuid":"af18002a-9f2d-4b2a-8b39-e9a1bc61563a","files":[".json"],"subMetas":{},"userData":{"syncNodeName":"dead"}}
|
||||
|
||||
@@ -1,292 +0,0 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "start",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 0,
|
||||
"persistent": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "start",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 8
|
||||
},
|
||||
{
|
||||
"__id__": 10
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 14
|
||||
},
|
||||
"_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": 1,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "Fx08_00",
|
||||
"_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": 1,
|
||||
"_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": 147,
|
||||
"height": 134
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "41vle8WZtI3rAo26nuTqet"
|
||||
},
|
||||
{
|
||||
"__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@c0540",
|
||||
"__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": null,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "d35G5blftA27sMYOVYUT4h"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "edJUwnclRHraYFEO2HroRN",
|
||||
"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": 104,
|
||||
"height": 75
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "a7pn5tzA1BSI1AfdpVsHh7"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Animation",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 11
|
||||
},
|
||||
"playOnLoad": true,
|
||||
"_clips": [
|
||||
{
|
||||
"__uuid__": "9b809af9-120e-4683-a90a-5fecbd4e1ebd",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
}
|
||||
],
|
||||
"_defaultClip": {
|
||||
"__uuid__": "9b809af9-120e-4683-a90a-5fecbd4e1ebd",
|
||||
"__expectedType__": "cc.AnimationClip"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "63z5ZyjTNKYbn+kEVB1s3W"
|
||||
},
|
||||
{
|
||||
"__type__": "0f3c4JhFbFO2rEFqBJJ7hFv",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 13
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "32SLcINL1JHZ+vIyextzaC"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "cfqCWnxbFLNoQMedQXsav3",
|
||||
"instance": null,
|
||||
"targetOverrides": null
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 783 KiB After Width: | Height: | Size: 121 KiB |
@@ -7,11 +7,11 @@
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 5,
|
||||
"sample": 1,
|
||||
"speed": 1,
|
||||
"wrapMode": 2,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 6,
|
||||
"_duration": 30,
|
||||
"_hash": 500763545,
|
||||
"_tracks": [
|
||||
{
|
||||
@@ -77,7 +77,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -90,7 +90,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -102,7 +104,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
@@ -118,7 +122,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -131,7 +135,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -143,7 +149,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
@@ -159,7 +167,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -172,7 +180,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -184,7 +194,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
@@ -251,7 +263,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -264,7 +276,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -276,7 +290,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
@@ -292,7 +308,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -305,7 +321,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -317,7 +335,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
@@ -333,7 +353,7 @@
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
6
|
||||
30
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
@@ -346,7 +366,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
@@ -358,7 +380,9 @@
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": null
|
||||
"__editorExtras__": {
|
||||
"broken": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
|
||||
@@ -710,10 +710,10 @@
|
||||
"_string": "点击开始游戏",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 36,
|
||||
"_fontSize": 35,
|
||||
"_actualFontSize": 51,
|
||||
"_fontSize": 50,
|
||||
"_fontFamily": "Arial",
|
||||
"_lineHeight": 40,
|
||||
"_lineHeight": 50,
|
||||
"_overflow": 2,
|
||||
"_enableWrapText": true,
|
||||
"_font": null,
|
||||
@@ -732,7 +732,7 @@
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_outlineWidth": 2,
|
||||
"_outlineWidth": 4,
|
||||
"_enableShadow": false,
|
||||
"_shadowColor": {
|
||||
"__type__": "cc.Color",
|
||||
|
||||
@@ -406,7 +406,7 @@
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 279.527,
|
||||
"y": 418.633,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -707,13 +707,13 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_string": "点击开始游戏",
|
||||
"_string": "选择一个战斗技能",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 36,
|
||||
"_fontSize": 35,
|
||||
"_actualFontSize": 46,
|
||||
"_fontSize": 45,
|
||||
"_fontFamily": "Arial",
|
||||
"_lineHeight": 40,
|
||||
"_lineHeight": 50,
|
||||
"_overflow": 2,
|
||||
"_enableWrapText": true,
|
||||
"_font": null,
|
||||
@@ -732,7 +732,7 @@
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_outlineWidth": 2,
|
||||
"_outlineWidth": 3,
|
||||
"_enableShadow": false,
|
||||
"_shadowColor": {
|
||||
"__type__": "cc.Color",
|
||||
@@ -762,8 +762,6 @@
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "25KvUjWTBKZq5B20vwtseT",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
@@ -1178,14 +1176,14 @@
|
||||
"__prefab": {
|
||||
"__id__": 49
|
||||
},
|
||||
"_alignFlags": 40,
|
||||
"_alignFlags": 42,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 590,
|
||||
"_bottom": 590,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_verticalCenter": 418.633,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"y": 248.35000000000002,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -703,13 +703,13 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_string": "点击开始游戏",
|
||||
"_string": "选中卡牌向上滑动,召唤英雄",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 36,
|
||||
"_fontSize": 35,
|
||||
"_actualFontSize": 41,
|
||||
"_fontSize": 40,
|
||||
"_fontFamily": "Arial",
|
||||
"_lineHeight": 40,
|
||||
"_lineHeight": 50,
|
||||
"_overflow": 2,
|
||||
"_enableWrapText": true,
|
||||
"_font": null,
|
||||
@@ -728,7 +728,7 @@
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_outlineWidth": 2,
|
||||
"_outlineWidth": 4,
|
||||
"_enableShadow": false,
|
||||
"_shadowColor": {
|
||||
"__type__": "cc.Color",
|
||||
@@ -1174,12 +1174,12 @@
|
||||
"__prefab": {
|
||||
"__id__": 49
|
||||
},
|
||||
"_alignFlags": 40,
|
||||
"_alignFlags": 44,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 590,
|
||||
"_bottom": 590,
|
||||
"_bottom": 788.35,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
@@ -1303,7 +1303,6 @@
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "6dh4o/8p1Cy5An1p6o4Bc3",
|
||||
"instance": null,
|
||||
"targetOverrides": null
|
||||
"instance": null
|
||||
}
|
||||
]
|
||||
@@ -335,12 +335,12 @@
|
||||
"__prefab": {
|
||||
"__id__": 14
|
||||
},
|
||||
"_alignFlags": 0,
|
||||
"_alignFlags": 36,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_left": 651.948,
|
||||
"_right": 67.05200000000002,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_bottom": 50.20600000000002,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
@@ -349,7 +349,7 @@
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 0,
|
||||
"_originalWidth": 1,
|
||||
"_originalHeight": 0,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
@@ -707,13 +707,13 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_string": "点击开始游戏",
|
||||
"_string": "点击「战斗」进入战斗阶段",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 36,
|
||||
"_fontSize": 35,
|
||||
"_actualFontSize": 41,
|
||||
"_fontSize": 40,
|
||||
"_fontFamily": "Arial",
|
||||
"_lineHeight": 40,
|
||||
"_lineHeight": 50,
|
||||
"_overflow": 2,
|
||||
"_enableWrapText": true,
|
||||
"_font": null,
|
||||
@@ -732,7 +732,7 @@
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"_outlineWidth": 2,
|
||||
"_outlineWidth": 4,
|
||||
"_enableShadow": false,
|
||||
"_shadowColor": {
|
||||
"__type__": "cc.Color",
|
||||
|
||||
@@ -38,10 +38,13 @@
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 102
|
||||
},
|
||||
{
|
||||
"__id__": 104
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 104
|
||||
"__id__": 106
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -240,7 +243,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "m7",
|
||||
"_name": "h",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -618,7 +621,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "a1",
|
||||
"_name": "h",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -996,7 +999,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "k1",
|
||||
"_name": "h",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -1208,7 +1211,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hero2",
|
||||
"_name": "hero4",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -1374,7 +1377,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "m1",
|
||||
"_name": "h",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -1586,7 +1589,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hero4",
|
||||
"_name": "hero5",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -1752,7 +1755,7 @@
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "h1",
|
||||
"_name": "h",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
@@ -1990,6 +1993,39 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "f2zvSV135PlYuUfadiV2hO"
|
||||
},
|
||||
{
|
||||
"__type__": "46ae531x0VGib728jAKeNFe",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 105
|
||||
},
|
||||
"hero1": {
|
||||
"__id__": 42
|
||||
},
|
||||
"hero2": {
|
||||
"__id__": 62
|
||||
},
|
||||
"hero3": {
|
||||
"__id__": 2
|
||||
},
|
||||
"hero4": {
|
||||
"__id__": 62
|
||||
},
|
||||
"hero5": {
|
||||
"__id__": 82
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "86bacQ+jZMOokmXQGUf5Ed"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
|
||||
@@ -351,18 +351,18 @@
|
||||
"_dstBlendFactor": 4,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 88
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@1be8d",
|
||||
"__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73@b9538",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
"_type": 0,
|
||||
"_fillType": 0,
|
||||
"_sizeMode": 1,
|
||||
"_sizeMode": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
@@ -372,7 +372,10 @@
|
||||
"_fillRange": 0,
|
||||
"_isTrimmedMode": true,
|
||||
"_useGrayscale": false,
|
||||
"_atlas": null,
|
||||
"_atlas": {
|
||||
"__uuid__": "cb93c900-b440-4571-91d1-7da1636e3d73",
|
||||
"__expectedType__": "cc.SpriteAtlas"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"x": -259.716,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
@@ -271,7 +271,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 510,
|
||||
"width": 300,
|
||||
"height": 66
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -313,7 +313,7 @@
|
||||
},
|
||||
"_type": 1,
|
||||
"_fillType": 0,
|
||||
"_sizeMode": 1,
|
||||
"_sizeMode": 0,
|
||||
"_fillCenter": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0,
|
||||
@@ -443,7 +443,7 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_string": "第 1/20 波",
|
||||
"_string": "第 1 波",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 26,
|
||||
@@ -821,8 +821,8 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": -36.584,
|
||||
"x": 295.012,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -1110,8 +1110,8 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 100,
|
||||
"height": 100
|
||||
"width": 720,
|
||||
"height": 50
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
@@ -1136,11 +1136,11 @@
|
||||
"__prefab": {
|
||||
"__id__": 44
|
||||
},
|
||||
"_alignFlags": 17,
|
||||
"_alignFlags": 41,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 39.067999999999984,
|
||||
"_top": 64.06799999999998,
|
||||
"_bottom": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
@@ -1150,7 +1150,7 @@
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 0,
|
||||
"_originalWidth": 100,
|
||||
"_originalHeight": 0,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
@@ -14302,7 +14302,7 @@
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 761.798,
|
||||
"y": 640,
|
||||
"y": 1020,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
@@ -14903,11 +14903,11 @@
|
||||
"__prefab": {
|
||||
"__id__": 701
|
||||
},
|
||||
"_alignFlags": 2,
|
||||
"_alignFlags": 1,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 448.34799999999996,
|
||||
"_top": 200,
|
||||
"_bottom": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
@@ -15377,7 +15377,7 @@
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
],
|
||||
"value": true
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
|
||||
@@ -1386,7 +1386,7 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": -180,
|
||||
"x": -240,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
@@ -1785,7 +1785,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -2387,7 +2387,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -2910,7 +2910,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -3509,7 +3509,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -4764,7 +4764,7 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 180,
|
||||
"x": 240,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
@@ -5163,7 +5163,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -5765,7 +5765,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -9317,7 +9317,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 540,
|
||||
"width": 720,
|
||||
"height": 200
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -9345,8 +9345,8 @@
|
||||
},
|
||||
"_alignFlags": 44,
|
||||
"_target": null,
|
||||
"_left": 90,
|
||||
"_right": 90,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": -2,
|
||||
"_horizontalCenter": 0,
|
||||
|
||||
9
assets/resources/music.meta
Normal file
9
assets/resources/music.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "dedd7eec-c366-427a-a253-1cd907c8dc69",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
BIN
assets/resources/music/BATTLE.mp3
Normal file
BIN
assets/resources/music/BATTLE.mp3
Normal file
Binary file not shown.
14
assets/resources/music/BATTLE.mp3.meta
Normal file
14
assets/resources/music/BATTLE.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "db35468f-265d-4465-86ba-5186c6c1d0a2",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/Critical.mp3
Normal file
BIN
assets/resources/music/Critical.mp3
Normal file
Binary file not shown.
14
assets/resources/music/Critical.mp3.meta
Normal file
14
assets/resources/music/Critical.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "82584d50-d744-4717-bba9-a74cf21c136d",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/Fire.mp3
Normal file
BIN
assets/resources/music/Fire.mp3
Normal file
Binary file not shown.
14
assets/resources/music/Fire.mp3.meta
Normal file
14
assets/resources/music/Fire.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "b03d05c0-ce55-4f75-b4ef-214d0151a240",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/Hit.mp3
Normal file
BIN
assets/resources/music/Hit.mp3
Normal file
Binary file not shown.
14
assets/resources/music/Hit.mp3.meta
Normal file
14
assets/resources/music/Hit.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "32a28430-53ab-4444-a65a-140412486986",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/button.mp3
Normal file
BIN
assets/resources/music/button.mp3
Normal file
Binary file not shown.
14
assets/resources/music/button.mp3.meta
Normal file
14
assets/resources/music/button.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "62669db4-c83b-4438-9a93-150260d92408",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/dun.mp3
Normal file
BIN
assets/resources/music/dun.mp3
Normal file
Binary file not shown.
14
assets/resources/music/dun.mp3.meta
Normal file
14
assets/resources/music/dun.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "7c92881a-8fe9-4c48-bbe0-8f1989d6e3f1",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/flash.mp3
Normal file
BIN
assets/resources/music/flash.mp3
Normal file
Binary file not shown.
14
assets/resources/music/flash.mp3.meta
Normal file
14
assets/resources/music/flash.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "683c1c7a-97da-4694-a96a-f83df6575d73",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
BIN
assets/resources/music/home.mp3
Normal file
BIN
assets/resources/music/home.mp3
Normal file
Binary file not shown.
14
assets/resources/music/home.mp3.meta
Normal file
14
assets/resources/music/home.mp3.meta
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"ver": "1.0.0",
|
||||
"importer": "audio-clip",
|
||||
"imported": true,
|
||||
"uuid": "8c59d18e-9b43-46e5-8249-39d98ffec825",
|
||||
"files": [
|
||||
".json",
|
||||
".mp3"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"downloadMode": 0
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@ import { FightSet } from "./config/GameSet";
|
||||
*/
|
||||
export interface GameDate {
|
||||
gold: number,
|
||||
switch_effect?: boolean, // 音效开关
|
||||
switch_music?: boolean, // 音乐开关
|
||||
timestamp?: number, // 用于比对本地与云端数据的最新状态
|
||||
}
|
||||
export interface CloudData {
|
||||
@@ -129,6 +131,8 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
} as GameScoreStats,
|
||||
|
||||
gold: 0, // 金币数据(MVVM绑定字段)
|
||||
switch_effect: true, // 音效开关(MVVM绑定字段)
|
||||
switch_music: true, // 音乐开关(MVVM绑定字段)
|
||||
};
|
||||
|
||||
|
||||
@@ -219,6 +223,16 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
if (data.gold !== undefined) {
|
||||
this.vmdata.gold = data.gold;
|
||||
}
|
||||
// 同步音效开关
|
||||
if (data.switch_effect !== undefined) {
|
||||
this.vmdata.switch_effect = data.switch_effect;
|
||||
if (oops.audio) oops.audio.switchEffect = data.switch_effect;
|
||||
}
|
||||
// 同步音乐开关
|
||||
if (data.switch_music !== undefined) {
|
||||
this.vmdata.switch_music = data.switch_music;
|
||||
if (oops.audio) oops.audio.switchMusic = data.switch_music;
|
||||
}
|
||||
}
|
||||
|
||||
// 触发UI更新
|
||||
@@ -231,6 +245,8 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
getGameDate() {
|
||||
let data: GameDate = {
|
||||
gold: this.vmdata.gold,
|
||||
switch_effect: this.vmdata.switch_effect,
|
||||
switch_music: this.vmdata.switch_music,
|
||||
timestamp: Date.now() // 每次获取当前数据结构时都附带最新的时间戳
|
||||
};
|
||||
return data;
|
||||
@@ -245,6 +261,22 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
return true
|
||||
}
|
||||
|
||||
updateSwitchEffect(isOpen: boolean, is_sync: boolean = true) {
|
||||
this.vmdata.switch_effect = isOpen;
|
||||
if (oops.audio) oops.audio.switchEffect = isOpen;
|
||||
if (is_sync) {
|
||||
gameDataSync.markDataDirty();
|
||||
}
|
||||
}
|
||||
|
||||
updateSwitchMusic(isOpen: boolean, is_sync: boolean = true) {
|
||||
this.vmdata.switch_music = isOpen;
|
||||
if (oops.audio) oops.audio.switchMusic = isOpen;
|
||||
if (is_sync) {
|
||||
gameDataSync.markDataDirty();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在游戏载入早期调用,预加载常用图集
|
||||
*/
|
||||
|
||||
@@ -35,6 +35,7 @@ export enum FightSet {
|
||||
FiIGHT_TIME = 30,//战斗时间
|
||||
// BACK_CHANCE=40,//击退概率
|
||||
FROST_TIME = 3,//冰冻时间
|
||||
STUN_TIME = 2,//击晕时间
|
||||
SKILL_CAST_DELAY = 0.15,
|
||||
CSKILL_START_X = -340,
|
||||
CSKILL_START_Y = 30,
|
||||
|
||||
@@ -29,6 +29,8 @@ export enum Attrs {
|
||||
// ==================== 特殊效果属性 ====================
|
||||
freeze_chance = "freeze_chance", // 冰冻概率
|
||||
freeze_res = "freeze_res", // 冰冻抗性
|
||||
stun_chance = "stun_chance", // 击晕概率
|
||||
stun_res = "stun_res", // 击晕抗性
|
||||
knockback_chance = "knockback_chance", // 击退概率
|
||||
knockback_distance = "knockback_distance", // 击退距离强化
|
||||
knockback_res = "knockback_res", // 击退抗性
|
||||
|
||||
@@ -72,6 +72,7 @@ function buildEffectDesc(skill: ReturnType<typeof mergeSkillParams>): string {
|
||||
if (skill.crt) parts.push(`暴击+${skill.crt}%`);
|
||||
// 附加冰冻概率
|
||||
if (skill.frz) parts.push(`冰冻+${skill.frz}%`);
|
||||
if (skill.stun) parts.push(`击晕+${skill.stun}%`);
|
||||
// 附加击退概率
|
||||
if (skill.bck) parts.push(`击退+${skill.bck}%`);
|
||||
}
|
||||
@@ -109,7 +110,7 @@ export function buildSkillDesc(hero: heroInfo): string {
|
||||
// 通过 s_uuid 查找技能基础配置
|
||||
const base = SkillSet[item.s_uuid];
|
||||
if (!base) continue;
|
||||
// 合并 overrides 得到实际技能参数(ap/hit_count/crt/frz/bck 等可能被覆盖)
|
||||
// 合并 overrides 得到实际技能参数(ap/hit_count/crt/frz/stun/bck 等可能被覆盖)
|
||||
const skill = mergeSkillParams(base, item.overrides);
|
||||
// 将模板中的 "n" 替换为实际触发次数
|
||||
const trigger = tpl.replace("n", String(item.t_num));
|
||||
|
||||
@@ -150,6 +150,7 @@ export interface SkillConfig {
|
||||
kind?: SkillKind, // 主效果类型
|
||||
crt?: number, // 额外暴击率
|
||||
frz?: number, // 额外冰冻概率
|
||||
stun?: number, // 额外击晕概率
|
||||
bck?: number, // 额外击退概率
|
||||
buff_type?: Attrs, // Buff 类型 (单一职责)
|
||||
call_hero?: number, // 召唤技能召唤英雄id(可选)
|
||||
@@ -164,8 +165,10 @@ export interface SkillOverrides {
|
||||
hitcd?: number;
|
||||
crt?: number;
|
||||
frz?: number;
|
||||
stun?: number;
|
||||
bck?: number;
|
||||
buff_type?: Attrs;
|
||||
call_hero?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,13 +186,13 @@ export function mergeSkillParams(config: SkillConfig, overrides?: SkillOverrides
|
||||
}
|
||||
|
||||
export const SkillUpList = {
|
||||
1001: { ap: 0, hit_count: 0, buff_ap: 0, buff_hp: 0, bck: 0, frz: 0, crt: 0, num: 0 }
|
||||
1001: { ap: 0, hit_count: 0, buff_ap: 0, buff_hp: 0, bck: 0, frz: 0, stun: 0, crt: 0, num: 0 }
|
||||
}
|
||||
|
||||
/******
|
||||
*
|
||||
* 射箭类技能 带暴击属性
|
||||
* 火法技能 带击退属性
|
||||
* 火法技能
|
||||
* 冰法技能 带冰冻属性
|
||||
*
|
||||
*/
|
||||
@@ -213,18 +216,18 @@ export const SkillSet: Record<number, SkillConfig> = {
|
||||
6004: {
|
||||
uuid: 6004, name: "光箭绿", sp_name: "atk_c3", 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.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.bezier, EType: EType.collision, info: "一定几率击退目标",
|
||||
RType: RType.bezier, EType: EType.collision, info: "普通远程攻击",
|
||||
},
|
||||
//怪物战士类型统一使用 6005
|
||||
6005: {
|
||||
uuid: 6005, name: "光箭深红", sp_name: "atk_c4", 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.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.bezier, EType: EType.collision, info: "一定几率击退目标",
|
||||
RType: RType.bezier, EType: EType.collision, info: "普通远程攻击",
|
||||
},
|
||||
6006: {
|
||||
uuid: 6006, name: "光箭灰白", sp_name: "atk_c5", 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.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.bezier, EType: EType.collision, info: "一定几率击退目标",
|
||||
RType: RType.bezier, EType: EType.collision, info: "普通远程攻击",
|
||||
},
|
||||
6007: {
|
||||
uuid: 6007, name: "水球", sp_name: "ball_water", icon: "1126", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "atk",
|
||||
@@ -249,13 +252,13 @@ export const SkillSet: Record<number, SkillConfig> = {
|
||||
|
||||
6101: {
|
||||
uuid: 6101, name: "火球", sp_name: "ball_fire", icon: "1126", TGroup: TGroup.Enemy, readyAnm: "", endAnm: "", act: "atk",
|
||||
DTType: DTType.single, frz: 0, ap: 100, hit_count: 1, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
DTType: DTType.single, stun: 0, ap: 100, hit_count: 1, hitcd: 0.3, speed: 720, with: 90, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害,一定几率暴击,高阶技能",
|
||||
},
|
||||
6102: {
|
||||
uuid: 6102, name: "龙卷风", sp_name: "ball_winds", 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.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害,一定几率击退目标,高阶技能",
|
||||
RType: RType.linear, EType: EType.collision, info: "造成攻击力100%的伤害,高阶技能",
|
||||
},
|
||||
//怪物法师统一使用 暗影球
|
||||
6103: {
|
||||
@@ -269,14 +272,14 @@ export const SkillSet: Record<number, SkillConfig> = {
|
||||
RType: RType.linear, EType: EType.collision, info: "射出强力箭矢,最多穿透6个敌人,附带20%额外暴击率",
|
||||
},
|
||||
6105: {
|
||||
uuid: 6105, name: "冰刺", sp_name: "ice_up", icon: "1173", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max",
|
||||
DTType: DTType.range, frz: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.fixedEnd, EType: EType.animationEnd, info: "召唤冰刺攻击一排的敌人,有概率冰冻",
|
||||
uuid: 6105, name: "雷爆", sp_name: "ice_up", icon: "1173", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max",
|
||||
DTType: DTType.range, stun: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.fixedEnd, EType: EType.animationEnd, info: "召唤雷爆攻击一排的敌人,有概率击晕",
|
||||
},
|
||||
6106: {
|
||||
uuid: 6106, name: "冰推", sp_name: "ice_t", icon: "1173", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max",
|
||||
DTType: DTType.range, frz: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.fixed, EType: EType.animationEnd, info: "召唤冰墙阻挡敌人,有概率冰冻,100%击退",
|
||||
uuid: 6106, name: "雷墙", sp_name: "ice_t", icon: "1173", TGroup: TGroup.Enemy, readyAnm: "blues", endAnm: "", act: "max",
|
||||
DTType: DTType.range, stun: 0, ap: 150, hit_count: 6, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.remote,
|
||||
RType: RType.fixed, EType: EType.animationEnd, info: "召唤雷墙阻挡敌人,有概率击晕",
|
||||
},
|
||||
6107: {
|
||||
uuid: 6107, name: "陨石", sp_name: "fire_yuns", icon: "1173", TGroup: TGroup.Enemy, readyAnm: "reds", endAnm: "", act: "max",
|
||||
@@ -322,19 +325,19 @@ export const SkillSet: Record<number, SkillConfig> = {
|
||||
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.critical_damage, info: "全体友方暴击伤害提升20%,持续1次",
|
||||
},
|
||||
6405: {
|
||||
uuid: 6405, name: "冰冻强化", sp_name: "buff_wind", icon: "1255", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
|
||||
uuid: 6405, name: "击晕强化", sp_name: "buff_wind", icon: "1255", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
|
||||
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
|
||||
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.freeze_chance, info: "全体友方冰冻概率提升10%,持续1次",
|
||||
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.stun_chance, info: "全体友方击晕概率提升10%,持续1次",
|
||||
},
|
||||
6406: {
|
||||
uuid: 6406, name: "击退强化", sp_name: "buff_wind", icon: "1255", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
|
||||
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
|
||||
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_chance, info: "全体友方击退概率提升10%,持续1次",
|
||||
RType: RType.fixed, EType: EType.animationEnd, info: "暂未使用",
|
||||
},
|
||||
6407: {
|
||||
uuid: 6407, name: "距推强化", sp_name: "buff_wind", icon: "1255", TGroup: TGroup.Team, readyAnm: "up_blue", endAnm: "", act: "atk",
|
||||
DTType: DTType.single, kind: SkillKind.Support, ap: 1, hit_count: 1, hitcd: 0.2, speed: 720, with: 0, ready: 0.2, EAnm: 0, DAnm: "", IType: IType.support,
|
||||
RType: RType.fixed, EType: EType.animationEnd, buff_type: Attrs.knockback_distance, info: "全体友方击退距离提升20点,持续1次",
|
||||
RType: RType.fixed, EType: EType.animationEnd, info: "暂未使用",
|
||||
},
|
||||
6408: {
|
||||
uuid: 6408, name: "穿刺强化", sp_name: "buff_wind", icon: "1255", TGroup: TGroup.Team, readyAnm: "up_ap", endAnm: "", act: "atk",
|
||||
@@ -363,7 +366,7 @@ export enum FieldSkillType {
|
||||
SellGold = 6, // 卖出英雄金币提升
|
||||
WaveHeal = 7, // 战斗结束生命回复量提升
|
||||
HeroAtk = 8, // 英雄攻击力加成
|
||||
HeroFrost = 9, // 英雄冰冻加成
|
||||
HeroStun = 9, // 英雄击晕加成
|
||||
HeroCrit = 10, // 英雄暴击加成
|
||||
HeroCritDamage = 11, // 英雄暴击伤害加成
|
||||
HeroSpeed = 12, // 英雄攻击速度加成
|
||||
@@ -393,7 +396,7 @@ export const FieldSkillSet: Record<number, FieldSkillConfig> = {
|
||||
7006: { uuid: 7006, name: "出售强化", type: FieldSkillType.SellGold, value: 5, info: "卖出英雄金币+5" },
|
||||
7007: { uuid: 7007, name: "战后恢复", type: FieldSkillType.WaveHeal, value: 0.3, info: "战斗结束生命回复量+30%" },
|
||||
7008: { uuid: 7008, name: "攻击加成", type: FieldSkillType.HeroAtk, value: 0.2, info: "英雄攻击力+20%" },
|
||||
7009: { uuid: 7009, name: "冰冻加成", type: FieldSkillType.HeroFrost, value: 0.1, info: "英雄冰冻概率+10%" },
|
||||
7009: { uuid: 7009, name: "击晕加成", type: FieldSkillType.HeroStun, value: 0.1, info: "英雄击晕概率+10%" },
|
||||
7010: { uuid: 7010, name: "暴击加成", type: FieldSkillType.HeroCrit, value: 0.1, info: "英雄暴击率+10%" },
|
||||
7011: { uuid: 7011, name: "暴伤加成", type: FieldSkillType.HeroCritDamage, value: 0.5, info: "英雄暴击伤害+50%" },
|
||||
7012: { uuid: 7012, name: "攻速加成", type: FieldSkillType.HeroSpeed, value: 0.2, info: "英雄攻击速度+20%" },
|
||||
|
||||
@@ -268,33 +268,33 @@ export const HeroInfo: Record<number, heroInfo> = {
|
||||
info:"驻场提供攻击力光环,每2次攻击为全队叠加攻击力"},
|
||||
|
||||
|
||||
// ========== 冰冻控制流 (新加) ==========
|
||||
5106:{uuid:5106,name:"寒冰学徒",path:"hm3", fac:FacSet.HERO,pool_lv:1,lv:1,type:HType.Long,
|
||||
// ========== 击晕控制流 (新加) ==========
|
||||
5106:{uuid:5106,name:"雷爆学徒",path:"hm3", fac:FacSet.HERO,pool_lv:1,lv:1,type:HType.Long,
|
||||
hp:130,ap:50,
|
||||
skills:{6007:{uuid:6007,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Slow1].cd,ccd:0}},
|
||||
field:[6405],
|
||||
atking:[{s_uuid:6405,t_num:2}],
|
||||
evolve:{
|
||||
2:{atking:[{s_uuid:6105,t_num:3,overrides:{ap:100,frz:20}}]},
|
||||
3:{skill:{s_uuid:6105,overrides:{frz:15,hit_count:6}},
|
||||
atking:[{s_uuid:6105,t_num:1,overrides:{ap:150,frz:35,hit_count:8}}],
|
||||
2:{atking:[{s_uuid:6105,t_num:3,overrides:{ap:100,stun:20}}]},
|
||||
3:{skill:{s_uuid:6105,overrides:{stun:15,hit_count:6}},
|
||||
atking:[{s_uuid:6105,t_num:1,overrides:{ap:150,stun:35,hit_count:8}}],
|
||||
ap_bonus:30},
|
||||
},
|
||||
info:"驻场提供冰冻光环,每2次普攻叠加冰冻概率"},
|
||||
info:"驻场提供击晕光环,每2次普攻叠加击晕概率"},
|
||||
|
||||
5107:{uuid:5107,name:"霜寒法师",path:"hm5", fac:FacSet.HERO,pool_lv:2,lv:1,type:HType.Long,
|
||||
5107:{uuid:5107,name:"雷霆法师",path:"hm5", fac:FacSet.HERO,pool_lv:2,lv:1,type:HType.Long,
|
||||
hp:160,ap:80,
|
||||
skills:{6007:{uuid:6007,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Normal3].cd,ccd:0}},
|
||||
field:[6405],
|
||||
atking:[{s_uuid:6105,t_num:2,overrides:{ap:120,frz:25}}],
|
||||
info:"驻场冰冻光环,每2次攻击触发冰刺AOE,25%冰冻概率冻住一排敌人"},
|
||||
atking:[{s_uuid:6105,t_num:2,overrides:{ap:120,stun:25}}],
|
||||
info:"驻场击晕光环,每2次攻击触发雷爆AOE,25%击晕概率晕住一排敌人"},
|
||||
|
||||
5108:{uuid:5108,name:"永冬贤者",path:"hm4", fac:FacSet.HERO,pool_lv:3,lv:1,type:HType.Long,
|
||||
5108:{uuid:5108,name:"风暴贤者",path:"hm4", fac:FacSet.HERO,pool_lv:3,lv:1,type:HType.Long,
|
||||
hp:250,ap:110,
|
||||
skills:{6007:{uuid:6007,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Slow3].cd,ccd:0}},
|
||||
field:[6405],
|
||||
atking:[{s_uuid:6105,t_num:1,overrides:{ap:150,frz:35,hit_count:8}}],
|
||||
info:"驻场强力冰冻光环,每次攻击释放冰刺,35%冰冻概率"},
|
||||
atking:[{s_uuid:6105,t_num:1,overrides:{ap:150,stun:35,hit_count:8}}],
|
||||
info:"驻场强力击晕光环,每次攻击释放雷爆,35%击晕概率"},
|
||||
|
||||
|
||||
// ========== 辅助英雄 (保留 5301, 5302) ==========
|
||||
@@ -335,28 +335,28 @@ export const HeroInfo: Record<number, heroInfo> = {
|
||||
|
||||
|
||||
|
||||
// ========== 击退推拉流 ==========
|
||||
// ========== 穿刺风怒流 ==========
|
||||
5209:{uuid:5209,name:"风弓手",path:"ha2", fac:FacSet.HERO,pool_lv:1,lv:1,type:HType.Long,
|
||||
hp:140,ap:45,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Fast3].cd,ccd:0}},
|
||||
atking:[{s_uuid:6406,t_num:2}],
|
||||
info:"快速射击,每2次攻击为全队叠加击退概率"},
|
||||
atking:[{s_uuid:6408,t_num:2}],
|
||||
info:"快速射击,每2次攻击为全队叠加穿透概率"},
|
||||
|
||||
5210:{uuid:5210,name:"龙卷猎手",path:"ha3", fac:FacSet.HERO,pool_lv:2,lv:1,type:HType.Long,
|
||||
hp:170,ap:70,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Normal2].cd,ccd:0}},
|
||||
atking:[{s_uuid:6102,t_num:2,overrides:{bck:30,hit_count:3}}],
|
||||
info:"每2次攻击释放龙卷风,30%击退概率推开一排敌人"},
|
||||
atking:[{s_uuid:6102,t_num:2,overrides:{hit_count:3}}],
|
||||
info:"每2次攻击释放龙卷风,攻击一排敌人"},
|
||||
|
||||
5404:{uuid:5404,name:"风暴刺客",path:"hc2", fac:FacSet.HERO,pool_lv:4,lv:1,type:HType.Melee,
|
||||
hp:250,ap:100,
|
||||
skills:{6001:{uuid:6001,lv:1,cd:AtkSpeedSet[AtkSpeedLv.Fast2].cd,ccd:0}},
|
||||
atking:[
|
||||
{s_uuid:6407,t_num:1},
|
||||
{s_uuid:6102,t_num:3,overrides:{bck:50,hit_count:5,ap:120}}
|
||||
{s_uuid:6409,t_num:1},
|
||||
{s_uuid:6102,t_num:3,overrides:{hit_count:5,ap:120}}
|
||||
],
|
||||
dead:[{s_uuid:6406,t_num:1}],
|
||||
info:"极速近战,每次攻击给全队加击退距离,每3次攻击释放龙卷风,死后全队永久击退率加成"},
|
||||
dead:[{s_uuid:6408,t_num:1}],
|
||||
info:"极速近战,每次攻击给全队加风怒次数,每3次攻击释放龙卷风,死后全队永久穿透率加成"},
|
||||
|
||||
// ========== 暴击爆发流 ==========
|
||||
5211:{uuid:5211,name:"猎鹰射手",path:"ha4", fac:FacSet.HERO,pool_lv:1,lv:1,type:HType.Long,
|
||||
@@ -496,7 +496,7 @@ export const HeroList: number[] = [
|
||||
5101, 5106, 5107, 5108,
|
||||
// 治疗续航流
|
||||
5301, 5302, 5303, 5304, 5305,
|
||||
// 击退推拉流
|
||||
// 穿刺风怒流
|
||||
5209, 5210, 5404,
|
||||
// 暴击爆发流
|
||||
5211, 5212, 5405,
|
||||
|
||||
@@ -184,17 +184,31 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
|
||||
const freezeChance = (damageEvent.Attrs[Attrs.freeze_chance] || 0) - (TAttrsComp.freeze_res || 0);
|
||||
const isFrost = !TAttrsComp.isFrost() && this.checkChance(freezeChance);
|
||||
|
||||
// 击晕判定
|
||||
const stunChance = (damageEvent.Attrs[Attrs.stun_chance] || 0) - (TAttrsComp.stun_res || 0);
|
||||
const isStun = !TAttrsComp.isStun() && this.checkChance(stunChance);
|
||||
|
||||
// 击退判定
|
||||
const knockbackChance = (damageEvent.Attrs[Attrs.knockback_chance] || 0) - (TAttrsComp.knockback_res || 0);
|
||||
const isKnockback = this.checkChance(knockbackChance);
|
||||
|
||||
// ✅ 触发视图层表现(伤害数字、受击动画、冰冻、击退)
|
||||
// ✅ 触发视图层表现(伤害数字、受击动画、冰冻、击晕、击退)
|
||||
if (targetView) {
|
||||
targetView.do_atked(damage, isCrit, damageEvent.s_uuid, false);
|
||||
targetView.playEnd(skillConf.endAnm);
|
||||
if (isFrost) {
|
||||
TAttrsComp.toFrost();
|
||||
targetView.in_iced(TAttrsComp.frost_end_time);
|
||||
if (damageEvent.Attrs.fac === FacSet.HERO) {
|
||||
smc.vmdata.scores.freeze_count++;
|
||||
}
|
||||
}
|
||||
if (isStun) {
|
||||
TAttrsComp.toStun();
|
||||
targetView.in_stun(TAttrsComp.stun_end_time);
|
||||
if (damageEvent.Attrs.fac === FacSet.HERO) {
|
||||
smc.vmdata.scores.stun_count++;
|
||||
}
|
||||
}
|
||||
if (isKnockback) {
|
||||
targetView.back(damageEvent.Attrs[Attrs.knockback_distance] || 0);
|
||||
|
||||
@@ -49,6 +49,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
critical_res: number = 0; // 暴击抗性
|
||||
freeze_chance: number = 0; // 冰冻概率
|
||||
freeze_res: number = 0; // 冰冻抗性
|
||||
stun_chance: number = 0; // 击晕概率
|
||||
stun_res: number = 0; // 击晕抗性
|
||||
knockback_chance: number = 0; // 击退概率
|
||||
knockback_distance: number = 0; // 击退距离强化
|
||||
knockback_res: number = 0; // 击退抗性
|
||||
@@ -61,6 +63,7 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
|
||||
|
||||
frost_end_time: number = 0;
|
||||
stun_end_time: number = 0;
|
||||
|
||||
boom: boolean = false; // 自爆怪
|
||||
|
||||
@@ -100,6 +103,7 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
*/
|
||||
initAttrs() {
|
||||
this.frost_end_time = 0;
|
||||
this.stun_end_time = 0;
|
||||
}
|
||||
/*******************基础属性管理********************/
|
||||
|
||||
@@ -162,11 +166,35 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
const frostTime = FightSet.FROST_TIME * time;
|
||||
this.frost_end_time = Math.max(this.frost_end_time, frostTime);
|
||||
}
|
||||
|
||||
toStun(time: number=1) {
|
||||
const stunTime = FightSet.STUN_TIME * time;
|
||||
this.stun_end_time = Math.max(this.stun_end_time, stunTime);
|
||||
|
||||
// 击晕时 CD 清零
|
||||
for (const key in this.skills) {
|
||||
const skill = this.skills[key];
|
||||
if (skill) {
|
||||
skill.ccd = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateCD(dt: number){
|
||||
// 如果处于冰冻状态,则技能 CD 暂停刷新
|
||||
if (this.isFrost()) return;
|
||||
|
||||
// 如果处于击晕状态,则技能 CD 暂停刷新(且保持清零状态)
|
||||
if (this.isStun()) {
|
||||
for (const key in this.skills) {
|
||||
const skill = this.skills[key];
|
||||
if (skill) {
|
||||
skill.ccd = 0;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for (const key in this.skills) {
|
||||
const skill = this.skills[key];
|
||||
if (!skill) continue;
|
||||
@@ -185,6 +213,9 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
isFrost(): boolean {
|
||||
return this.frost_end_time > 0
|
||||
}
|
||||
isStun(): boolean {
|
||||
return this.stun_end_time > 0
|
||||
}
|
||||
getSkillLevel(skillId: number): number {
|
||||
if (!skillId) return 0;
|
||||
return this.skills[skillId]?.lv ?? 0;
|
||||
@@ -242,7 +273,13 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
/** 英雄实时冰冻率 = 基础冰冻率 + 驻场冰冻率。 */
|
||||
public getRuntimeFreezeChance(): number {
|
||||
if (this.fac !== FacSet.HERO) return this.freeze_chance;
|
||||
return this.freeze_chance + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroFrost);
|
||||
return this.freeze_chance;
|
||||
}
|
||||
|
||||
/** 英雄实时击晕率 = 基础击晕率 + 驻场击晕率。 */
|
||||
public getRuntimeStunChance(): number {
|
||||
if (this.fac !== FacSet.HERO) return this.stun_chance;
|
||||
return this.stun_chance + HeroAttrsComp.getFieldPercentValue(FieldSkillType.HeroStun);
|
||||
}
|
||||
|
||||
/** 英雄实时风怒概率 = 基础风怒 + 驻场风怒。 */
|
||||
@@ -352,6 +389,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.critical_res = 0;
|
||||
this.freeze_chance = 0;
|
||||
this.freeze_res = 0;
|
||||
this.stun_chance = 0;
|
||||
this.stun_res = 0;
|
||||
this.knockback_chance = 0;
|
||||
this.knockback_distance = 0;
|
||||
this.knockback_res = 0;
|
||||
@@ -363,6 +402,7 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.boom = false;
|
||||
|
||||
this.frost_end_time = 0;
|
||||
this.stun_end_time = 0;
|
||||
|
||||
// 重置技能距离缓存
|
||||
this.maxSkillDistance = 0;
|
||||
@@ -406,7 +446,12 @@ export class HeroBuffSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
|
||||
attrsComp.frost_end_time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(attrsComp.stun_end_time > 0){
|
||||
attrsComp.stun_end_time -= 0.1;
|
||||
if(attrsComp.stun_end_time <= 0){
|
||||
attrsComp.stun_end_time = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
void e;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ export class HeroSpine extends Component {
|
||||
@property(HeroAnmComp)
|
||||
anm: HeroAnmComp = null;
|
||||
|
||||
status:string="idle";
|
||||
status:string="";
|
||||
|
||||
onLoad() {
|
||||
// 角色控制组件
|
||||
|
||||
@@ -31,7 +31,7 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
// ==================== View 层属性(表现相关)====================
|
||||
as: HeroSpine = null!
|
||||
status:String = "idle"
|
||||
status:String = ""
|
||||
scale: number = 1; // 显示方向
|
||||
box_group:number = BoxSet.HERO; // 碰撞组
|
||||
realDeadTime:number=0.1
|
||||
@@ -89,6 +89,7 @@ export class HeroViewComp extends CCComp {
|
||||
private onHeroClicked() {
|
||||
if (!this.model) return;
|
||||
if (this.model.fac !== FacSet.HERO) return;
|
||||
oops.audio.playEffect("music/button");
|
||||
|
||||
const eid = this.ent?.eid;
|
||||
if (!eid) return;
|
||||
@@ -104,10 +105,10 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
/** 初始化/重置视图状态 */
|
||||
init() {
|
||||
this.status = "idle";
|
||||
this.status = "";
|
||||
this.deadCD = 0;
|
||||
this.lastBarUpdateTime = 0;
|
||||
this.as.idle()
|
||||
this.status_change("idle");
|
||||
|
||||
// 初始化 UI 节点
|
||||
this.initUINodes();
|
||||
@@ -308,6 +309,11 @@ export class HeroViewComp extends CCComp {
|
||||
this.spawnTimedFx("game/skill/buff/iced", this.node, t);
|
||||
}
|
||||
|
||||
/** 击晕特效 */
|
||||
in_stun(t: number = 1) {
|
||||
this.spawnTimedFx("game/skill/buff/stun", this.node, t);
|
||||
}
|
||||
|
||||
/** 技能提示 */
|
||||
private tooltip(type: number = 1, value: string = "", s_uuid: number = 1001, y: number = 50) {
|
||||
let pos = v3(0, 60);
|
||||
@@ -518,6 +524,13 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
if (damage <= 0) return;
|
||||
|
||||
// 播放受击音效
|
||||
if (isCrit) {
|
||||
oops.audio.playEffect("music/Critical");
|
||||
} else {
|
||||
oops.audio.playEffect("music/Hit");
|
||||
}
|
||||
|
||||
// 视图层表现
|
||||
let SConf=SkillSet[s_uuid]
|
||||
const hitAnm = SConf?.DAnm|| "atked";
|
||||
|
||||
@@ -194,6 +194,29 @@ export class Monster extends ecs.Entity {
|
||||
// 最终技能等级 = 初始技能等级 + 怪物等级增量,且下限为 0
|
||||
model.skills[skill.uuid] = { ...skill, lv: Math.max(0,skill.lv + mon_lv - 2), ccd: 0 };
|
||||
}
|
||||
// 【测试模式专属】如果有覆盖技能配置则应用
|
||||
const testSkills = (this as any)._testSkills;
|
||||
if (testSkills) {
|
||||
if (testSkills.skill !== undefined) {
|
||||
// 如果是替换普攻,通常是修改 hero.skill 字段或从 model.skills 里清除并注入
|
||||
model.skills = {};
|
||||
if (testSkills.skill) {
|
||||
model.skills[testSkills.skill.s_uuid] = {
|
||||
uuid: testSkills.skill.s_uuid,
|
||||
cd: testSkills.skill.cd ?? 0,
|
||||
lv: 1,
|
||||
ccd: 0,
|
||||
overrides: testSkills.skill.overrides
|
||||
};
|
||||
}
|
||||
}
|
||||
if (testSkills.atking !== undefined) model.atking = testSkills.atking;
|
||||
if (testSkills.atked !== undefined) model.atked = testSkills.atked;
|
||||
if (testSkills.dead !== undefined) model.dead = testSkills.dead;
|
||||
if (testSkills.fstart !== undefined) model.fstart = testSkills.fstart;
|
||||
if (testSkills.fend !== undefined) model.fend = testSkills.fend;
|
||||
}
|
||||
|
||||
// 缓存技能射程等派生数据,减少战斗帧内重复计算
|
||||
model.updateSkillDistanceCache();
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
mockAttrs.ap = highestAp;
|
||||
mockAttrs.critical = 0;
|
||||
mockAttrs.freeze_chance = 0;
|
||||
mockAttrs.stun_chance = 0;
|
||||
mockAttrs.puncture_chance = 0;
|
||||
mockAttrs.fac = FacSet.HERO;
|
||||
mockAttrs.type = HType.Long; // 假定为远程,拥有较长索敌范围
|
||||
@@ -228,6 +229,9 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
heroView.playOther('yellow')
|
||||
}
|
||||
|
||||
// 播放特殊技能触发音效
|
||||
oops.audio.playEffect("music/flash");
|
||||
|
||||
// 如果是敌方攻击技能,必须在战斗中才能释放;友方增益/护盾则允许在非战斗中释放
|
||||
let config = SkillSet[s_uuid];
|
||||
if (!config) return;
|
||||
@@ -482,7 +486,7 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
if (config.buff_type === Attrs.ap) upgradeValue = sUp.buff_ap || 0;
|
||||
else if (config.buff_type === Attrs.hp_max) upgradeValue = sUp.buff_hp || 0;
|
||||
else if (config.buff_type === Attrs.critical) upgradeValue = sUp.crt || 0;
|
||||
// 如果后续有冰冻等,在这里加上对应的 sUp 字段即可,如 sUp.frz
|
||||
// 如果后续有冰冻、击晕等,在这里加上对应的 sUp 字段即可,如 sUp.frz / sUp.stun
|
||||
|
||||
const totalBuffValue = baseValue + upgradeValue;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* @LastEditors: dgflash
|
||||
* @LastEditTime: 2022-08-17 12:38:59
|
||||
*/
|
||||
import { Node } from "cc";
|
||||
import { Node, Button } from "cc";
|
||||
import { UICallbacks } from "../../../../extensions/oops-plugin-framework/assets/core/gui/layer/Defines";
|
||||
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
|
||||
import { AsyncQueue, NextFunction } from "../../../../extensions/oops-plugin-framework/assets/libs/collection/AsyncQueue";
|
||||
@@ -27,6 +27,19 @@ export class Initialize extends ecs.Entity {
|
||||
debugMode: boolean = false; // 是否启用调试模式
|
||||
protected init() {
|
||||
var queue: AsyncQueue = new AsyncQueue();
|
||||
|
||||
// --- 全局注入:为所有 Button 组件增加点击音效 ---
|
||||
const originalOnTouchEnded = Button.prototype["_onTouchEnded"];
|
||||
if (originalOnTouchEnded) {
|
||||
Button.prototype["_onTouchEnded"] = function(event) {
|
||||
if (this.interactable && this.node && this.node.activeInHierarchy) {
|
||||
oops.audio.playEffect("music/button");
|
||||
}
|
||||
originalOnTouchEnded.call(this, event);
|
||||
};
|
||||
}
|
||||
// ---------------------------------------------
|
||||
|
||||
// 加载自定义资
|
||||
this.loadCustom(queue);
|
||||
// 加载多语言包
|
||||
|
||||
@@ -275,8 +275,7 @@ export class HInfoComp extends CCComp {
|
||||
this.previewPoolLv = poolLv;
|
||||
this.isSkillCard = isSkillCard;
|
||||
if (this.sell_node) this.sell_node.active = false;
|
||||
// 如果是技能卡预览模式(即点击了战场上的技能),允许关闭弹窗
|
||||
if (this.close_node) this.close_node.active = isSkillCard;
|
||||
if (this.close_node) this.close_node.active = true;
|
||||
this.cacheLabels();
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
90
assets/script/game/map/HeroMoveComp.ts
Normal file
90
assets/script/game/map/HeroMoveComp.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
import { _decorator, Component, Node, Animation, Vec3 } from "cc";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('HeroMoveComp')
|
||||
export class HeroMoveComp extends Component {
|
||||
|
||||
@property({ type: Node })
|
||||
hero1: Node = null!;
|
||||
@property({ type: Node })
|
||||
hero2: Node = null!;
|
||||
@property({ type: Node })
|
||||
hero3: Node = null!;
|
||||
@property({ type: Node })
|
||||
hero4: Node = null!;
|
||||
@property({ type: Node })
|
||||
hero5: Node = null!;
|
||||
|
||||
// 控制移动速度的基础参数
|
||||
private baseSpeed: number = 20; // 每秒向右移动的基础像素速度
|
||||
private timer: number = 0;
|
||||
// 为每个英雄保存其对应的 Animation 和随机参数
|
||||
private heroDatas: { node: Node, anim: Animation | null, startX: number, phase: number }[] = [];
|
||||
|
||||
onLoad() {
|
||||
const heroes = [this.hero1, this.hero2, this.hero3, this.hero4, this.hero5];
|
||||
|
||||
heroes.forEach(heroNode => {
|
||||
if (heroNode) {
|
||||
// 查找名为 "h" 的子节点
|
||||
const hNode = heroNode.getChildByName("h");
|
||||
let anim: Animation | null = null;
|
||||
if (hNode) {
|
||||
anim = hNode.getComponent(Animation);
|
||||
// 确保有动画组件才尝试播放
|
||||
if (anim && anim.clips && anim.clips.length > 0) {
|
||||
anim.play("move");
|
||||
}
|
||||
}
|
||||
|
||||
this.heroDatas.push({
|
||||
node: heroNode,
|
||||
anim: anim,
|
||||
startX: heroNode.position.x, // 记录初始X位置
|
||||
phase: Math.random() * Math.PI * 2 // 随机初始相位
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
update(dt: number) {
|
||||
this.timer += dt;
|
||||
|
||||
this.heroDatas.forEach(data => {
|
||||
if (!data.node) return;
|
||||
|
||||
// 设置周期为 4 秒 (例如:1秒加速向右,1秒减速回原点,1秒减速向左,1秒加速回原点)
|
||||
// 使用正弦波控制速度,余弦波控制位移(因为速度是位移的导数)
|
||||
const cycleDuration = 4;
|
||||
const frequency = (Math.PI * 2) / cycleDuration;
|
||||
|
||||
// 速度倍率,范围在 0.9 ~ 1.1 之间波动
|
||||
// sin 波形在 4秒周期内,正负各占 2秒
|
||||
const speedMultiplier = 1.0 + Math.sin(this.timer * frequency + data.phase) * 0.1;
|
||||
|
||||
// 调整动画的播放速度
|
||||
if (data.anim) {
|
||||
// 检查状态是否存在,以避免没有播放动画时的错误
|
||||
const state = data.anim.getState("move");
|
||||
if (state && state.isPlaying) {
|
||||
state.speed = speedMultiplier;
|
||||
} else if (data.anim.clips && data.anim.clips.length > 0) {
|
||||
// 如果停止了,尝试重新播放
|
||||
data.anim.play("move");
|
||||
}
|
||||
}
|
||||
|
||||
// 根据时间计算位置偏移量
|
||||
// 使用 -cos 函数,使得当速度(sin)为最大时,位置在原点,
|
||||
// 积分关系:速度 v = A * sin(wt),位移 s = - (A/w) * cos(wt)
|
||||
// 这样能保证在一个周期内它始终围绕原点往复运动,最终回到原始点
|
||||
const maxOffset = 30; // 左右偏离原点的最大像素距离
|
||||
const currentOffset = -Math.cos(this.timer * frequency + data.phase) * maxOffset;
|
||||
|
||||
const pos = data.node.position;
|
||||
// 相对于初始点进行位置设置,确保周期性回到原始点
|
||||
data.node.setPosition(new Vec3(data.startX + currentOffset, pos.y, pos.z));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
9
assets/script/game/map/HeroMoveComp.ts.meta
Normal file
9
assets/script/game/map/HeroMoveComp.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "46ae5df5-c745-4689-bef6-f2300a78d15e",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -643,6 +643,7 @@ export class MissionCardComp extends CCComp {
|
||||
}
|
||||
/** 抽卡按钮释放 → 执行抽卡逻辑 */
|
||||
private onDrawTouchEnd() {
|
||||
oops.audio.playEffect("music/button");
|
||||
this.playButtonClickAnim(this.cards_chou, () => this.onClickDraw());
|
||||
}
|
||||
/** 抽卡按钮取消 → 恢复缩放 */
|
||||
@@ -655,6 +656,7 @@ export class MissionCardComp extends CCComp {
|
||||
this.playButtonPressAnim(this.skill_refresh);
|
||||
}
|
||||
private onSkillDrawTouchEnd() {
|
||||
oops.audio.playEffect("music/button");
|
||||
this.playButtonClickAnim(this.skill_refresh, () => this.onClickSkillRefresh());
|
||||
}
|
||||
private onSkillDrawTouchCancel() {
|
||||
@@ -665,6 +667,7 @@ export class MissionCardComp extends CCComp {
|
||||
this.playButtonPressAnim(this.skill_ad_refresh);
|
||||
}
|
||||
private onSkillAdDrawTouchEnd() {
|
||||
oops.audio.playEffect("music/button");
|
||||
this.playButtonClickAnim(this.skill_ad_refresh, () => this.onClickSkillAdRefresh());
|
||||
}
|
||||
private onSkillAdDrawTouchCancel() {
|
||||
|
||||
@@ -117,7 +117,7 @@ export class MissionComp extends CCComp {
|
||||
|
||||
// ======================== 运行时状态 ========================
|
||||
|
||||
/** 战斗已耗时(秒),正向计时 */
|
||||
/** 本波战斗已耗时(秒),正向计时,用于自适应难度评估 */
|
||||
clearTime: number = 0
|
||||
/** 剩余复活次数 */
|
||||
revive_times: number = 1;
|
||||
@@ -242,7 +242,7 @@ export class MissionComp extends CCComp {
|
||||
|
||||
/** 更新时间/波数显示(仅在秒数变化时更新以减少 Label 操作) */
|
||||
update_time() {
|
||||
const remainSecond = Math.floor(this.clearTime);
|
||||
const remainSecond = Math.floor(smc.vmdata.mission_data.fight_time);
|
||||
if (remainSecond === this.lastTimeSecond) return;
|
||||
this.lastTimeSecond = remainSecond;
|
||||
let m = Math.floor(remainSecond / 60);
|
||||
@@ -307,6 +307,10 @@ export class MissionComp extends CCComp {
|
||||
loading.active = false
|
||||
}, 0.5)
|
||||
}
|
||||
|
||||
// 播放战斗背景音乐,并稍微降低音量
|
||||
oops.audio.volumeMusic = 0.5;
|
||||
oops.audio.playerMusicLoop("music/BATTLE");
|
||||
}
|
||||
|
||||
/** 更新开始按钮的状态显示 */
|
||||
@@ -396,7 +400,7 @@ export class MissionComp extends CCComp {
|
||||
const label = phaseNode.getComponent(Label);
|
||||
if (label) {
|
||||
const wave = Math.max(1, this.currentWave || (smc.vmdata && smc.vmdata.mission_data ? smc.vmdata.mission_data.level : 1) || 1);
|
||||
label.string = `第 ${wave}/15 波`;
|
||||
label.string = `第 ${wave} 波`;
|
||||
}
|
||||
|
||||
// 阶段切换动感表现:只在进入战斗阶段跳动一下,让流程充满心流体验
|
||||
@@ -636,6 +640,8 @@ export class MissionComp extends CCComp {
|
||||
if (!smc.mission.play) return;
|
||||
if (smc.mission.pause) return;
|
||||
if (this.currentPhase !== MissionPhase.Prepare) return;
|
||||
|
||||
oops.audio.playEffect("music/button");
|
||||
this.to_fight();
|
||||
}
|
||||
|
||||
|
||||
@@ -156,6 +156,9 @@ export class MissionHomeComp extends CCComp {
|
||||
this.uodate_data()
|
||||
this.hideAllPages()
|
||||
this.node.active=true
|
||||
// 播放主页背景音乐,恢复默认音量
|
||||
oops.audio.volumeMusic = 1.0;
|
||||
oops.audio.playerMusicLoop("music/home")
|
||||
}
|
||||
|
||||
/** 更新主页显示数据(预留) */
|
||||
|
||||
@@ -35,7 +35,7 @@ import { HeroInfo, HType } from "../common/config/heroSet";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { GameEvent } from "../common/config/GameEvent";
|
||||
import {BoxSet, FacSet } from "../common/config/GameSet";
|
||||
import { spawningEngine, GeneratedMonster, AffixType, MonType, MonList } from "./RogueConfig";
|
||||
import { spawningEngine, GeneratedMonster, AffixType, MonType, MonList, TestModeConfig } from "./RogueConfig";
|
||||
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
|
||||
import { MonMoveComp } from "../hero/MonMoveComp";
|
||||
const { ccclass, property } = _decorator;
|
||||
@@ -195,6 +195,11 @@ export class MissionMonCompComp extends CCComp {
|
||||
const monsters = spawningEngine.generateWave(this.currentWave);
|
||||
this.setupWaveData(monsters);
|
||||
|
||||
// 如果处于测试模式,英雄也需要限制为只产出一个,这部分通知可以配合使用
|
||||
if (TestModeConfig.enable) {
|
||||
mLogger.log(this.debugMode, 'MissionMonComp', "[MissionMonComp] 测试模式已开启:每波仅生成1只基准怪物");
|
||||
}
|
||||
|
||||
mLogger.log(this.debugMode, 'MissionMonComp', "[MissionMonComp] Starting Wave System");
|
||||
}
|
||||
|
||||
@@ -306,12 +311,16 @@ export class MissionMonCompComp extends CCComp {
|
||||
let scale = -1;
|
||||
|
||||
// 获取硬编码的占位点坐标,不再使用随机偏移
|
||||
const basePos = MissionMonCompComp.MON_POSITIONS[posIndex];
|
||||
const basePos = MissionMonCompComp.MON_POSITIONS[posIndex % MissionMonCompComp.MON_POSITIONS.length];
|
||||
const spawnX = basePos.x;
|
||||
const landingY = basePos.y + (monData.isBoss ? 6 : 0);
|
||||
const spawnPos: Vec3 = v3(spawnX, landingY + MissionMonCompComp.MON_DROP_HEIGHT, 0);
|
||||
this.globalSpawnOrder = (this.globalSpawnOrder + 1) % 999;
|
||||
|
||||
// 如果存在测试技能覆盖,则传递下去(修改 mon.load 逻辑或者通过预存)
|
||||
// 为了避免侵入 Mon.ts 的原有逻辑,我们先预存
|
||||
(mon as any)._testSkills = monData.testSkills;
|
||||
|
||||
mon.load(spawnPos, scale, monData.uuid, monData.isBoss, landingY, monLv, posIndex);
|
||||
|
||||
// 设置渲染排序
|
||||
|
||||
@@ -278,16 +278,26 @@ const BOSS_TIERS = new Set([1, 2, 3, 4, 5])
|
||||
const MAJOR_BOSS_TIERS = new Set([3, 5])
|
||||
|
||||
/**
|
||||
* 5 阶梯配置表
|
||||
* key = 阶梯编号 1-5,value = 该阶梯的完整配置
|
||||
* 主线 15 波映射:wave 1-3 → T1, wave 4-6 → T2, ..., wave 13-15 → T5
|
||||
* 5 阶梯配置表 (基于"第5波单怪=1个英雄"的基准推演)
|
||||
*
|
||||
* 核心设计推演:
|
||||
* 1. 玩家反馈:Tier 2 (第4-6波) 的单只怪物强度,刚好对应 1 个 Lv1 英雄。
|
||||
* 2. 设 Tier 2 的 Multiplier 为 2.0,基准近战怪成本为 22。
|
||||
* 3. 则 1个购卡战力 (1个Lv1英雄) = 22 * 2.0 = 44 难度点。
|
||||
* 4. 推演公式:当前波次总难度 (Budget * Multiplier) ≈ 累计购卡数 * 44。
|
||||
* 5. 约束:为避免触发同屏最大 12 只怪的截断机制,后期 Budget 锁定在 260-280,难度全靠 Multiplier (属性) 拉升。
|
||||
*/
|
||||
export const TierConfigs: Record<number, TierConfig> = {
|
||||
1: { multiplier: 1.0, budget: 60, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
|
||||
2: { multiplier: 1.5, budget: 120, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
|
||||
3: { multiplier: 2.2, budget: 180, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
|
||||
4: { multiplier: 3.2, budget: 240, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
|
||||
5: { multiplier: 4.5, budget: 300, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
|
||||
// T1(W1-W3): 预计累计 2.3 卡。目标总难度 101。Budget 80 * 1.1 = 88
|
||||
1: { multiplier: 1.1, budget: 80, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
|
||||
// T2(W4-W6): 预计累计 8.0 卡。目标总难度 352。Budget 160 * 2.0 = 320
|
||||
2: { multiplier: 2.0, budget: 160, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
|
||||
// T3(W7-W9): 预计累计 15.3卡。目标总难度 673。Budget 220 * 3.0 = 660
|
||||
3: { multiplier: 3.0, budget: 220, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
|
||||
// T4(W10-W12):预计累计 23.3卡。目标总难度 1025。Budget 260 * 4.0 = 1040
|
||||
4: { multiplier: 4.0, budget: 260, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
|
||||
// T5(W13-W15):预计累计 31.3卡。目标总难度 1377。Budget 280 * 5.2 = 1456
|
||||
5: { multiplier: 5.2, budget: 280, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -525,6 +535,42 @@ export const InfiniteModeConfig = {
|
||||
megaBossInterval: 3,
|
||||
}
|
||||
|
||||
// ======================== 测试模式配置 ========================
|
||||
|
||||
/**
|
||||
* 单挑测试模式配置
|
||||
* 用于寻找 1v1 环境下单只怪物与单只英雄的战力基准
|
||||
* 开启后每波只生成 1 只怪物,且其属性随波次平滑递增
|
||||
*/
|
||||
export const TestModeConfig = {
|
||||
/** 是否开启单挑测试模式 */
|
||||
enable: true,
|
||||
/** 测试模式中生成怪物的基础生命值 (对应 1级 英雄) */
|
||||
baseHp: 150,
|
||||
/** 测试模式中生成怪物的基础攻击力 (对应 1级 英雄) */
|
||||
baseAp: 12,
|
||||
/** 每波次基础属性增加比例 (例如 0.2 表示每波增加 20%) */
|
||||
growthRatePerWave: 0.2,
|
||||
/** 固定的测试怪物类型 */
|
||||
monType: MonType.Melee,
|
||||
/** 固定的测试怪物 UUID (如 6001 兽人战士) */
|
||||
monUuid: 6001,
|
||||
/** 测试模式中生成怪物是否携带特定词缀(为空则不带) */
|
||||
affixes: [] as AffixType[],
|
||||
/** 每次刷新的怪物数量 */
|
||||
spawnCount: 1,
|
||||
|
||||
// ===== 附加技能测试覆盖配置 =====
|
||||
/** 替换普攻技能(清除旧技能,添加新技能) */
|
||||
skill: undefined as { s_uuid: number; cd?: number; overrides?: any } | undefined,
|
||||
/** 覆盖触发技能(完全替换该类型的触发配置) */
|
||||
atking: undefined as { s_uuid: number; t_num: number; overrides?: any }[] | undefined,
|
||||
atked: undefined as { s_uuid: number; t_num: number; overrides?: any }[] | undefined,
|
||||
dead: undefined as { s_uuid: number; t_num: number; overrides?: any }[] | undefined,
|
||||
fstart: undefined as { s_uuid: number; t_num: number; overrides?: any }[] | undefined,
|
||||
fend: undefined as { s_uuid: number; t_num: number; overrides?: any }[] | undefined,
|
||||
}
|
||||
|
||||
// ======================== 向后兼容接口 ========================
|
||||
|
||||
/**
|
||||
@@ -574,6 +620,15 @@ export interface GeneratedMonster {
|
||||
affixes: AffixType[]
|
||||
isBoss: boolean
|
||||
spawnIndex: number
|
||||
/** 测试模式专属:临时覆盖怪物技能配置 */
|
||||
testSkills?: {
|
||||
skill?: { s_uuid: number; cd?: number; overrides?: any };
|
||||
atking?: { s_uuid: number; t_num: number; overrides?: any }[];
|
||||
atked?: { s_uuid: number; t_num: number; overrides?: any }[];
|
||||
dead?: { s_uuid: number; t_num: number; overrides?: any }[];
|
||||
fstart?: { s_uuid: number; t_num: number; overrides?: any }[];
|
||||
fend?: { s_uuid: number; t_num: number; overrides?: any }[];
|
||||
}
|
||||
}
|
||||
|
||||
// ======================== 生成引擎 ========================
|
||||
@@ -635,6 +690,42 @@ export class RogueSpawningEngine {
|
||||
generateWave(waveNumber: number): GeneratedMonster[] {
|
||||
if (waveNumber < 1) return []
|
||||
|
||||
// 测试模式拦截
|
||||
if (TestModeConfig.enable) {
|
||||
const growth = 1 + (waveNumber - 1) * TestModeConfig.growthRatePerWave;
|
||||
|
||||
// 提取词缀加成
|
||||
const affixHpMul = 1.0 + TestModeConfig.affixes.reduce(
|
||||
(sum, a) => sum + (AffixConfigs[a].hpMultiplier - 1.0), 0
|
||||
);
|
||||
const affixApMul = 1.0 + TestModeConfig.affixes.reduce(
|
||||
(sum, a) => sum + (AffixConfigs[a].apMultiplier - 1.0), 0
|
||||
);
|
||||
|
||||
const count = Math.max(1, TestModeConfig.spawnCount || 1);
|
||||
const monsters: GeneratedMonster[] = [];
|
||||
for (let i = 0; i < count; i++) {
|
||||
monsters.push({
|
||||
uuid: TestModeConfig.monUuid,
|
||||
type: TestModeConfig.monType,
|
||||
hp: Math.round(TestModeConfig.baseHp * growth * affixHpMul),
|
||||
ap: Math.round(TestModeConfig.baseAp * growth * affixApMul),
|
||||
affixes: [...TestModeConfig.affixes],
|
||||
isBoss: false,
|
||||
spawnIndex: i,
|
||||
testSkills: {
|
||||
skill: TestModeConfig.skill,
|
||||
atking: TestModeConfig.atking,
|
||||
atked: TestModeConfig.atked,
|
||||
dead: TestModeConfig.dead,
|
||||
fstart: TestModeConfig.fstart,
|
||||
fend: TestModeConfig.fend
|
||||
}
|
||||
});
|
||||
}
|
||||
return monsters;
|
||||
}
|
||||
|
||||
const tier = Math.ceil(waveNumber / 3)
|
||||
const waveInTier = ((waveNumber - 1) % 3) + 1 // 1, 2, or 3
|
||||
|
||||
|
||||
@@ -117,6 +117,7 @@ export class SkillBoxComp extends CCComp {
|
||||
|
||||
private onNodeClicked() {
|
||||
if (!this.initialized) return;
|
||||
oops.audio.playEffect("music/button");
|
||||
// 点击时弹出 HInfoComp,传入卡牌 UUID 和等级以启用预览模式
|
||||
const config = CardPoolList.find(c => c.uuid === this.s_uuid || c.skill === this.s_uuid);
|
||||
const cardUuid = config ? config.uuid : this.s_uuid;
|
||||
|
||||
@@ -206,12 +206,14 @@ export class Skill extends ecs.Entity {
|
||||
const SUp=SkillUpList[s_uuid] ? SkillUpList[s_uuid]:SkillUpList[1001];
|
||||
const sCrt = (config.crt ?? 0)+(SUp.crt*skill_lv);
|
||||
const sFrz = (config.frz ?? 0)+(SUp.frz*skill_lv);
|
||||
const sStun = (config.stun ?? 0)+(SUp.stun*skill_lv);
|
||||
const sAp =config.ap+(SUp.ap*skill_lv);
|
||||
const sHit=config.hit_count+(SUp.hit_count*skill_lv);
|
||||
sDataCom.Attrs[Attrs.ap] = Math.floor(cAttrsComp.ap*sAp/100); //技能的ap是百分值 需要/100 而且需要再最终计算总ap时再/100,不然会出现ap为90%变0
|
||||
sDataCom.Attrs[Attrs.critical] = cAttrsComp.getRuntimeCritical() + sCrt;
|
||||
sDataCom.Attrs[Attrs.critical_damage] = cAttrsComp.getRuntimeCritDamageBonus();
|
||||
sDataCom.Attrs[Attrs.freeze_chance] = cAttrsComp.getRuntimeFreezeChance() + sFrz;
|
||||
sDataCom.Attrs[Attrs.stun_chance] = cAttrsComp.getRuntimeStunChance() + sStun;
|
||||
sDataCom.Attrs[Attrs.knockback_chance] = cAttrsComp.knockback_chance || 0;
|
||||
sDataCom.Attrs[Attrs.knockback_distance] = cAttrsComp.knockback_distance || 0;
|
||||
sDataCom.Attrs[Attrs.puncture_chance] = cAttrsComp.getRuntimePunctureChance(); // 初始化携带施法者的穿透概率
|
||||
|
||||
Reference in New Issue
Block a user