Compare commits
30 Commits
1c74138334
...
card0515
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50f43c227a | ||
|
|
9c2c0a1621 | ||
|
|
b12270be66 | ||
|
|
d926c08582 | ||
|
|
10ab03b871 | ||
|
|
7dd5257fd8 | ||
|
|
b0d752ab18 | ||
|
|
4460c1aaf2 | ||
|
|
092d0e4371 | ||
|
|
8fca560efd | ||
|
|
44ce6cd30c | ||
|
|
3ea1a4d44c | ||
|
|
82adaf4069 | ||
|
|
7aa8a47a65 | ||
|
|
488b1632ef | ||
|
|
85ab6b0507 | ||
|
|
3f73669ba4 | ||
|
|
cb515ef00a | ||
|
|
7f5af4c04a | ||
|
|
acec8f6941 | ||
|
|
8c056f2e74 | ||
|
|
963c89a976 | ||
|
|
803e273187 | ||
|
|
4026397cfe | ||
|
|
969cd657f9 | ||
|
|
b178893a17 | ||
|
|
8e7334f1f0 | ||
|
|
facccf9a6a | ||
|
|
167c6b485a | ||
|
|
531343c0d7 |
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,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,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,
|
||||
|
||||
258
assets/resources/gui/anim/dianji.anim
Normal file
258
assets/resources/gui/anim/dianji.anim
Normal file
@@ -0,0 +1,258 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "dianji",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 15,
|
||||
"speed": 1,
|
||||
"wrapMode": 2,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 0.6666666666666666,
|
||||
"_hash": 500763545,
|
||||
"_tracks": [
|
||||
{
|
||||
"__id__": 1
|
||||
}
|
||||
],
|
||||
"_exoticAnimation": null,
|
||||
"_events": [],
|
||||
"_embeddedPlayers": [],
|
||||
"_additiveSettings": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_auxiliaryCurveEntries": []
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.VectorTrack",
|
||||
"_binding": {
|
||||
"__type__": "cc.animation.TrackBinding",
|
||||
"path": {
|
||||
"__id__": 2
|
||||
},
|
||||
"proxy": null
|
||||
},
|
||||
"_channels": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
},
|
||||
{
|
||||
"__id__": 7
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
}
|
||||
],
|
||||
"_nComponents": 3
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.TrackPath",
|
||||
"_paths": [
|
||||
"position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.3333333333333333,
|
||||
0.6666666666666666
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 20.685,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.3333333333333333,
|
||||
0.6666666666666666
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": -58.235,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.3333333333333333,
|
||||
0.6666666666666666
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [],
|
||||
"_values": [],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||
"enabled": false,
|
||||
"refClip": null
|
||||
}
|
||||
]
|
||||
@@ -2,12 +2,12 @@
|
||||
"ver": "2.0.3",
|
||||
"importer": "animation-clip",
|
||||
"imported": true,
|
||||
"uuid": "9b809af9-120e-4683-a90a-5fecbd4e1ebd",
|
||||
"uuid": "70fd0e99-c640-4497-b2c2-936f5179f227",
|
||||
"files": [
|
||||
".cconb"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"name": "start"
|
||||
"name": "dianji"
|
||||
}
|
||||
}
|
||||
258
assets/resources/gui/anim/huadong.anim
Normal file
258
assets/resources/gui/anim/huadong.anim
Normal file
@@ -0,0 +1,258 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.AnimationClip",
|
||||
"_name": "huadong",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"embeddedPlayerGroups": []
|
||||
},
|
||||
"_native": "",
|
||||
"sample": 10,
|
||||
"speed": 1,
|
||||
"wrapMode": 2,
|
||||
"enableTrsBlending": false,
|
||||
"_duration": 1,
|
||||
"_hash": 500763545,
|
||||
"_tracks": [
|
||||
{
|
||||
"__id__": 1
|
||||
}
|
||||
],
|
||||
"_exoticAnimation": null,
|
||||
"_events": [],
|
||||
"_embeddedPlayers": [],
|
||||
"_additiveSettings": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_auxiliaryCurveEntries": []
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.VectorTrack",
|
||||
"_binding": {
|
||||
"__type__": "cc.animation.TrackBinding",
|
||||
"path": {
|
||||
"__id__": 2
|
||||
},
|
||||
"proxy": null
|
||||
},
|
||||
"_channels": [
|
||||
{
|
||||
"__id__": 3
|
||||
},
|
||||
{
|
||||
"__id__": 5
|
||||
},
|
||||
{
|
||||
"__id__": 7
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
}
|
||||
],
|
||||
"_nComponents": 3
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.TrackPath",
|
||||
"_paths": [
|
||||
"position"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.7,
|
||||
1
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.7,
|
||||
1
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 213.527,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [
|
||||
0,
|
||||
0.7,
|
||||
1
|
||||
],
|
||||
"_values": [
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealKeyframeValue",
|
||||
"interpolationMode": 0,
|
||||
"tangentWeightMode": 0,
|
||||
"value": 0,
|
||||
"rightTangent": 0,
|
||||
"rightTangentWeight": 1,
|
||||
"leftTangent": 0,
|
||||
"leftTangentWeight": 1,
|
||||
"easingMethod": 0,
|
||||
"__editorExtras__": {
|
||||
"tangentMode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.animation.Channel",
|
||||
"_curve": {
|
||||
"__id__": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.RealCurve",
|
||||
"_times": [],
|
||||
"_values": [],
|
||||
"preExtrapolation": 1,
|
||||
"postExtrapolation": 1
|
||||
},
|
||||
{
|
||||
"__type__": "cc.AnimationClipAdditiveSettings",
|
||||
"enabled": false,
|
||||
"refClip": null
|
||||
}
|
||||
]
|
||||
@@ -2,12 +2,12 @@
|
||||
"ver": "2.0.3",
|
||||
"importer": "animation-clip",
|
||||
"imported": true,
|
||||
"uuid": "67419693-8fea-48df-a2f4-d52e993932c0",
|
||||
"uuid": "be8b49e0-c726-4c44-823e-d50921b886d3",
|
||||
"files": [
|
||||
".cconb"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"name": "buff_wind"
|
||||
"name": "huadong"
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,394 +0,0 @@
|
||||
[
|
||||
{
|
||||
"__type__": "cc.Prefab",
|
||||
"_name": "guide",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_native": "",
|
||||
"data": {
|
||||
"__id__": 1
|
||||
},
|
||||
"optimizationPolicy": 0,
|
||||
"persistent": false
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "guide",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": null,
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 2
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 12
|
||||
},
|
||||
{
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 16
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 18
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 640,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
"_layer": 1073741824,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hand",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 3
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 9
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": -294.238,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
"_layer": 1073741824,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hand",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 4
|
||||
},
|
||||
{
|
||||
"__id__": 6
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 8
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
"_layer": 1073741824,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 5
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 98,
|
||||
"height": 111
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "79Vu4Cv05PnJw1LXaSE4DD"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 3
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 7
|
||||
},
|
||||
"_customMaterial": null,
|
||||
"_srcBlendFactor": 2,
|
||||
"_dstBlendFactor": 4,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@5990a",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
"_type": 1,
|
||||
"_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": "e4qJ7s1yxD9JrYdfGLFkVo"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "c98HTacPpLKZkCGXoKpM4T",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 10
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 400,
|
||||
"height": 140
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "8bH6M7VahGk79zZiTESQBG"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "cbf1XjyLtM3ptfNNcea20y",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 13
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 720,
|
||||
"height": 1280
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "50NXlbXx9PHYhb8LT2nDRv"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 15
|
||||
},
|
||||
"_alignFlags": 45,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 100,
|
||||
"_originalHeight": 100,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "10DsksGxZDUbKjtrjCTMxF"
|
||||
},
|
||||
{
|
||||
"__type__": "25122z/cnRPhp90+CJYs5+r",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 17
|
||||
},
|
||||
"hand": {
|
||||
"__id__": 2
|
||||
},
|
||||
"guide_id": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "1fYnYBrbBNgoLyArRX18hs"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "6dh4o/8p1Cy5An1p6o4Bc3",
|
||||
"targetOverrides": null
|
||||
}
|
||||
]
|
||||
1313
assets/resources/gui/element/guide1.prefab
Normal file
1313
assets/resources/gui/element/guide1.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,6 @@
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "guide"
|
||||
"syncNodeName": "guide1"
|
||||
}
|
||||
}
|
||||
1311
assets/resources/gui/element/guide2.prefab
Normal file
1311
assets/resources/gui/element/guide2.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,12 +2,12 @@
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "311c4048-f871-4f0d-a1e6-c1d82aba4a42",
|
||||
"uuid": "26b4ba5a-c5e4-405a-8ce9-27be21f86171",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "buff_wind"
|
||||
"syncNodeName": "guide2"
|
||||
}
|
||||
}
|
||||
1308
assets/resources/gui/element/guide3.prefab
Normal file
1308
assets/resources/gui/element/guide3.prefab
Normal file
File diff suppressed because it is too large
Load Diff
13
assets/resources/gui/element/guide3.prefab.meta
Normal file
13
assets/resources/gui/element/guide3.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "9864952d-1b4a-4fb8-9e10-05ae52a1befb",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "guide3"
|
||||
}
|
||||
}
|
||||
1313
assets/resources/gui/element/guide4.prefab
Normal file
1313
assets/resources/gui/element/guide4.prefab
Normal file
File diff suppressed because it is too large
Load Diff
13
assets/resources/gui/element/guide4.prefab.meta
Normal file
13
assets/resources/gui/element/guide4.prefab.meta
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"ver": "1.1.50",
|
||||
"importer": "prefab",
|
||||
"imported": true,
|
||||
"uuid": "d2dcd02d-b49b-45ea-8e20-1cc474837da9",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"syncNodeName": "guide4"
|
||||
}
|
||||
}
|
||||
@@ -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": ""
|
||||
},
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,26 +22,26 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 445
|
||||
"__id__": 423
|
||||
},
|
||||
{
|
||||
"__id__": 454
|
||||
"__id__": 432
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 467
|
||||
"__id__": 445
|
||||
},
|
||||
{
|
||||
"__id__": 469
|
||||
"__id__": 447
|
||||
},
|
||||
{
|
||||
"__id__": 471
|
||||
"__id__": 449
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 473
|
||||
"__id__": 451
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -92,25 +92,22 @@
|
||||
},
|
||||
{
|
||||
"__id__": 73
|
||||
},
|
||||
{
|
||||
"__id__": 416
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 438
|
||||
"__id__": 416
|
||||
},
|
||||
{
|
||||
"__id__": 440
|
||||
"__id__": 418
|
||||
},
|
||||
{
|
||||
"__id__": 442
|
||||
"__id__": 420
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 444
|
||||
"__id__": 422
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -1389,7 +1386,7 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": -180,
|
||||
"x": -240,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
@@ -1788,7 +1785,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -2390,7 +2387,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -2913,7 +2910,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -3512,7 +3509,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -4767,7 +4764,7 @@
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 180,
|
||||
"x": 240,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
@@ -5166,7 +5163,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -5768,7 +5765,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 180,
|
||||
"width": 240,
|
||||
"height": 110
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -9320,7 +9317,7 @@
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 540,
|
||||
"width": 720,
|
||||
"height": 200
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@@ -9348,8 +9345,8 @@
|
||||
},
|
||||
"_alignFlags": 44,
|
||||
"_target": null,
|
||||
"_left": 90,
|
||||
"_right": 90,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": -2,
|
||||
"_horizontalCenter": 0,
|
||||
@@ -9422,421 +9419,17 @@
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"_parent": {
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_prefab": {
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 417
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 416
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "93fda804-b794-4119-a287-952a70be15cb",
|
||||
"__expectedType__": "cc.Prefab"
|
||||
},
|
||||
"fileId": "6dh4o/8p1Cy5An1p6o4Bc3",
|
||||
"instance": {
|
||||
"__id__": 418
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInstance",
|
||||
"fileId": "5aJhr6IKBCvr1yjzfuMlha",
|
||||
"prefabRootNode": {
|
||||
"__id__": 1
|
||||
},
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [
|
||||
{
|
||||
"__id__": 419
|
||||
}
|
||||
],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 433
|
||||
},
|
||||
{
|
||||
"__id__": 435
|
||||
},
|
||||
{
|
||||
"__id__": 436
|
||||
},
|
||||
{
|
||||
"__id__": 437
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
},
|
||||
{
|
||||
"__type__": "cc.MountedComponentsInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 420
|
||||
},
|
||||
"components": [
|
||||
{
|
||||
"__id__": 421
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.TargetInfo",
|
||||
"localID": [
|
||||
"cbf1XjyLtM3ptfNNcea20y"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {
|
||||
"mountedRoot": {
|
||||
"__id__": 416
|
||||
}
|
||||
},
|
||||
"node": {
|
||||
"__id__": 422
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 432
|
||||
},
|
||||
"_alignFlags": 44,
|
||||
"_target": null,
|
||||
"_left": 160,
|
||||
"_right": 160,
|
||||
"_top": 0,
|
||||
"_bottom": 275.762,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 400,
|
||||
"_originalHeight": 0,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hand",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
"__id__": 416
|
||||
},
|
||||
"_children": [
|
||||
{
|
||||
"__id__": 423
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 429
|
||||
},
|
||||
{
|
||||
"__id__": 421
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 431
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": -294.238,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
"_layer": 1073741824,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
"_name": "hand",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_parent": {
|
||||
"__id__": 422
|
||||
},
|
||||
"_children": [],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 424
|
||||
},
|
||||
{
|
||||
"__id__": 426
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 428
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_lrot": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
},
|
||||
"_lscale": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 1,
|
||||
"y": 1,
|
||||
"z": 1
|
||||
},
|
||||
"_mobility": 0,
|
||||
"_layer": 1073741824,
|
||||
"_euler": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 423
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 425
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 98,
|
||||
"height": 111
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "79Vu4Cv05PnJw1LXaSE4DD"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Sprite",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 423
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 427
|
||||
},
|
||||
"_customMaterial": null,
|
||||
"_srcBlendFactor": 2,
|
||||
"_dstBlendFactor": 4,
|
||||
"_color": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 255,
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_spriteFrame": {
|
||||
"__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@5990a",
|
||||
"__expectedType__": "cc.SpriteFrame"
|
||||
},
|
||||
"_type": 1,
|
||||
"_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": "e4qJ7s1yxD9JrYdfGLFkVo"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "c98HTacPpLKZkCGXoKpM4T",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 422
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 430
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 400,
|
||||
"height": 140
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
"x": 0.5,
|
||||
"y": 0.5
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "8bH6M7VahGk79zZiTESQBG"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 1
|
||||
},
|
||||
"asset": {
|
||||
"__id__": 0
|
||||
},
|
||||
"fileId": "cbf1XjyLtM3ptfNNcea20y",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": null
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "6b+8SFUXpKIYA8Q2ep3HVS"
|
||||
},
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 434
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
],
|
||||
"value": "guide"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.TargetInfo",
|
||||
"localID": [
|
||||
"6dh4o/8p1Cy5An1p6o4Bc3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 434
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
],
|
||||
"value": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 640,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 434
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
],
|
||||
"value": {
|
||||
"__type__": "cc.Quat",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0,
|
||||
"w": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 434
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
],
|
||||
"value": {
|
||||
"__type__": "cc.Vec3",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"z": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.UITransform",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 439
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 720,
|
||||
@@ -9863,7 +9456,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 441
|
||||
"__id__": 419
|
||||
},
|
||||
"_alignFlags": 21,
|
||||
"_target": null,
|
||||
@@ -9899,7 +9492,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 443
|
||||
"__id__": 421
|
||||
},
|
||||
"home_btn": {
|
||||
"__id__": 121
|
||||
@@ -9948,14 +9541,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 446
|
||||
"__id__": 424
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 445
|
||||
"__id__": 423
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "26bff847-cd29-48a5-bbfa-c3e2dbda688d",
|
||||
@@ -9963,7 +9556,7 @@
|
||||
},
|
||||
"fileId": "5a9CMsVQhKP5Y+UJfTKPbx",
|
||||
"instance": {
|
||||
"__id__": 447
|
||||
"__id__": 425
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -9977,19 +9570,19 @@
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 448
|
||||
"__id__": 426
|
||||
},
|
||||
{
|
||||
"__id__": 450
|
||||
"__id__": 428
|
||||
},
|
||||
{
|
||||
"__id__": 451
|
||||
"__id__": 429
|
||||
},
|
||||
{
|
||||
"__id__": 452
|
||||
"__id__": 430
|
||||
},
|
||||
{
|
||||
"__id__": 453
|
||||
"__id__": 431
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -9997,7 +9590,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 449
|
||||
"__id__": 427
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -10013,7 +9606,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 449
|
||||
"__id__": 427
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -10028,7 +9621,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 449
|
||||
"__id__": 427
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -10044,7 +9637,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 449
|
||||
"__id__": 427
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -10059,7 +9652,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 449
|
||||
"__id__": 427
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -10073,14 +9666,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 455
|
||||
"__id__": 433
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 454
|
||||
"__id__": 432
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "56aee962-4a5e-45ae-a779-999444d06d18",
|
||||
@@ -10088,7 +9681,7 @@
|
||||
},
|
||||
"fileId": "cboM54s0hM07XCtrpFp0/b",
|
||||
"instance": {
|
||||
"__id__": 456
|
||||
"__id__": 434
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -10102,28 +9695,28 @@
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 457
|
||||
"__id__": 435
|
||||
},
|
||||
{
|
||||
"__id__": 459
|
||||
"__id__": 437
|
||||
},
|
||||
{
|
||||
"__id__": 460
|
||||
"__id__": 438
|
||||
},
|
||||
{
|
||||
"__id__": 461
|
||||
"__id__": 439
|
||||
},
|
||||
{
|
||||
"__id__": 462
|
||||
"__id__": 440
|
||||
},
|
||||
{
|
||||
"__id__": 464
|
||||
"__id__": 442
|
||||
},
|
||||
{
|
||||
"__id__": 465
|
||||
"__id__": 443
|
||||
},
|
||||
{
|
||||
"__id__": 466
|
||||
"__id__": 444
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -10131,7 +9724,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 458
|
||||
"__id__": 436
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -10147,7 +9740,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 458
|
||||
"__id__": 436
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -10162,7 +9755,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 458
|
||||
"__id__": 436
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -10178,7 +9771,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 458
|
||||
"__id__": 436
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -10193,7 +9786,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 463
|
||||
"__id__": 441
|
||||
},
|
||||
"propertyPath": [
|
||||
"_top"
|
||||
@@ -10209,7 +9802,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 463
|
||||
"__id__": 441
|
||||
},
|
||||
"propertyPath": [
|
||||
"_alignFlags"
|
||||
@@ -10219,7 +9812,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 463
|
||||
"__id__": 441
|
||||
},
|
||||
"propertyPath": [
|
||||
"_bottom"
|
||||
@@ -10229,7 +9822,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 458
|
||||
"__id__": 436
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -10246,7 +9839,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 468
|
||||
"__id__": 446
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -10274,7 +9867,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 470
|
||||
"__id__": 448
|
||||
},
|
||||
"_alignFlags": 45,
|
||||
"_target": null,
|
||||
@@ -10310,7 +9903,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 472
|
||||
"__id__": 450
|
||||
},
|
||||
"debugMode": false,
|
||||
"_id": ""
|
||||
@@ -10329,16 +9922,13 @@
|
||||
},
|
||||
"fileId": "6514ysgfJNtIx/ak03+nce",
|
||||
"instance": null,
|
||||
"targetOverrides": null,
|
||||
"targetOverrides": [],
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 454
|
||||
"__id__": 432
|
||||
},
|
||||
{
|
||||
"__id__": 445
|
||||
},
|
||||
{
|
||||
"__id__": 416
|
||||
"__id__": 423
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
|
||||
@@ -9960,8 +9960,8 @@
|
||||
"height": 539,
|
||||
"rawWidth": 480,
|
||||
"rawHeight": 539,
|
||||
"borderTop": 72,
|
||||
"borderBottom": 346,
|
||||
"borderTop": 36,
|
||||
"borderBottom": 296,
|
||||
"borderLeft": 38,
|
||||
"borderRight": 30,
|
||||
"packable": true,
|
||||
|
||||
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 {
|
||||
@@ -44,7 +46,7 @@ export class SingletonModuleComp extends ecs.Comp {
|
||||
in_fight: false,
|
||||
stop_mon_action: false,
|
||||
};
|
||||
finish_guides: number[] = []
|
||||
finish_guides: number[] = [0]
|
||||
data: any = {
|
||||
score: 0,
|
||||
mission: 1,
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在游戏载入早期调用,预加载常用图集
|
||||
*/
|
||||
|
||||
@@ -77,7 +77,7 @@ export const CardsUpSet: Record<number, number> = {
|
||||
}
|
||||
|
||||
/**初始coin数 */
|
||||
export const CardInitCoins = 10
|
||||
export const CardInitCoins = 4
|
||||
/** 卡池升级每波减免金额 */
|
||||
export const CARD_POOL_UPGRADE_DISCOUNT_PER_WAVE = 10
|
||||
/** 卡池默认初始等级 */
|
||||
@@ -97,7 +97,7 @@ HeroList.forEach(uuid => {
|
||||
|
||||
const basePoolLv = hero.pool_lv || 1;
|
||||
const baseHeroLv = hero.lv || 1;
|
||||
const baseCost = 5;
|
||||
const baseCost = FightSet.BASE_COST;
|
||||
const baseWeight = 25;
|
||||
|
||||
// 生成从 basePoolLv 到 CARD_POOL_MAX_LEVEL 的卡牌
|
||||
|
||||
@@ -21,6 +21,9 @@ export enum FacSet {
|
||||
MON = 1,
|
||||
}
|
||||
export enum FightSet {
|
||||
WAVE_COIN_BASE = 4, // 波次金币基础奖励
|
||||
WAVE_COIN_GROW = 1, // 波次金币递增值
|
||||
WAVE_COIN_MAX = 10, // 波次金币最大基础奖励
|
||||
CRIT_DAMAGE = 50,//暴击伤害
|
||||
MORE_RC = 10,//更多次数 广告获取的次数
|
||||
HEARTPOS = -320,//基地位置
|
||||
@@ -32,12 +35,16 @@ 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,
|
||||
SHIELD_MAX = 5,
|
||||
WAVE_HEAL_RATE = 0.5, // 回合结束时所有英雄恢复最大生命值的比例
|
||||
PUNCTURE_DOWN = 50,
|
||||
REFRESH_COST = 1,
|
||||
BASE_COST=3
|
||||
// 刷新成本
|
||||
}
|
||||
|
||||
export const laneIdx = {
|
||||
|
||||
@@ -24,6 +24,10 @@ export enum UIID {
|
||||
HInfo,
|
||||
/** 技能卡牌系统核心控制器 */
|
||||
SkillBox,
|
||||
Guide1,
|
||||
Guide2,
|
||||
Guide3,
|
||||
Guide4,
|
||||
}
|
||||
|
||||
/** 打开界面方式的配置数据 */
|
||||
@@ -40,4 +44,8 @@ export var UIConfigData: { [key: number]: UIConfig } = {
|
||||
[UIID.Mission]: { layer: LayerType.UI, prefab: "gui/element/mission" },
|
||||
[UIID.HInfo]: { layer: LayerType.UI, prefab: "gui/element/hnode" },
|
||||
[UIID.SkillBox]: { layer: LayerType.UI, prefab: "gui/element/skillbox" },
|
||||
[UIID.Guide1]: { layer: LayerType.PopUp, prefab: "gui/element/guide1" },
|
||||
[UIID.Guide2]: { layer: LayerType.PopUp, prefab: "gui/element/guide2" },
|
||||
[UIID.Guide3]: { layer: LayerType.PopUp, prefab: "gui/element/guide3" },
|
||||
[UIID.Guide4]: { layer: LayerType.PopUp, prefab: "gui/element/guide4" },
|
||||
}
|
||||
@@ -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,
|
||||
@@ -451,11 +451,11 @@ export const HeroInfo: Record<number, heroInfo> = {
|
||||
|
||||
// 基础怪物 (全部远程攻击,HType仅决定站位)
|
||||
// 近战位怪物 (站在前排,承受更多伤害) — v5: TD节奏CD,多而弱爽感设计
|
||||
6001:{uuid:6001,name:"兽人战士",path:"m1", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:220,ap:10,speed:70,
|
||||
6001:{uuid:6001,name:"兽人战士",path:"m1", fac:FacSet.MON,lv:1,type:HType.Melee,hp:220,ap:10,speed:70,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow1].cd,ccd:0}},info:"基础近战位怪"},
|
||||
6002:{uuid:6002,name:"兽人精锐战士",path:"m2", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:300,ap:14,speed:110,
|
||||
6002:{uuid:6002,name:"兽人精锐战士",path:"m2", fac:FacSet.MON,lv:1,type:HType.Melee,hp:300,ap:14,speed:110,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow2].cd,ccd:0}},info:"进阶近战位怪,更快更痛"},
|
||||
6003:{uuid:6003,name:"兽人重装兵",path:"m3", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:850,ap:20,speed:50,
|
||||
6003:{uuid:6003,name:"兽人重装兵",path:"m3", fac:FacSet.MON,lv:1,type:HType.Melee,hp:850,ap:20,speed:50,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow3].cd,ccd:0}},info:"重型坦克怪,高HP慢攻"},
|
||||
// 远程位怪物 (站在后排,输出更高)
|
||||
6004:{uuid:6004,name:"兽人射手",path:"m4", fac:FacSet.MON,lv:1,type:HType.Long,hp:190,ap:35,speed:70,
|
||||
@@ -463,25 +463,25 @@ export const HeroInfo: Record<number, heroInfo> = {
|
||||
6005:{uuid:6005,name:"兽人刺客",path:"m5", fac:FacSet.MON,lv:1,type:HType.Long,hp:210,ap:38,speed:130,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow2].cd,ccd:0}},info:"高AP快速攻击刺客"},
|
||||
// 特殊位怪物
|
||||
6006:{uuid:6006,name:"骷髅领主",path:"m6", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:5000,ap:20,speed:60,
|
||||
6006:{uuid:6006,name:"骷髅领主",path:"m6", fac:FacSet.MON,lv:1,type:HType.Melee,hp:5000,ap:20,speed:60,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow3].cd,ccd:0}},info:"MiniBoss级坦克"},
|
||||
6007:{uuid:6007,name:"兽人术士",path:"m7", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:300,ap:24,speed:70,
|
||||
6007:{uuid:6007,name:"兽人术士",path:"m7", fac:FacSet.MON,lv:1,type:HType.Melee,hp:300,ap:24,speed:70,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow1].cd,ccd:0}},info:"法师怪,远程魔法攻击"},
|
||||
6008:{uuid:6008,name:"兽人火法",path:"m8", fac:FacSet.MON,lv:1,type:HType.Melee,dis:360,hp:270,ap:32,speed:70,
|
||||
6008:{uuid:6008,name:"兽人火法",path:"m8", fac:FacSet.MON,lv:1,type:HType.Melee,hp:270,ap:32,speed:70,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow2].cd,ccd:0}},info:"高输出法师怪"},
|
||||
|
||||
// BOSS怪物 — Boss节奏1.2-1.5s,删除不存在的6206技能
|
||||
6101:{uuid:6101,name:"兽人首领-双刀战士",path:"mb1", fac:FacSet.MON,lv:6,type:HType.Long,hp:1900,ap:30,speed:120,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow3].cd,ccd:0}},info:"远程Boss,高攻速"},
|
||||
6102:{uuid:6102,name:"兽人首领-斧头战士",path:"mb2", fac:FacSet.MON,lv:6,type:HType.Melee,dis:360,hp:7500,ap:26,speed:60,
|
||||
6102:{uuid:6102,name:"兽人首领-斧头战士",path:"mb2", fac:FacSet.MON,lv:6,type:HType.Melee,hp:7500,ap:26,speed:60,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow1].cd,ccd:0}},info:"近战Boss,超高HP"},
|
||||
6103:{uuid:6103,name:"兽人首领-魔法师",path:"mb3", fac:FacSet.MON,lv:6,type:HType.Long,hp:2250,ap:38,speed:110,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow2].cd,ccd:0}},info:"远程法系Boss,高AP"},
|
||||
6104:{uuid:6104,name:"兽人首领-射手",path:"mb4", fac:FacSet.MON,lv:6,type:HType.Melee,dis:360,hp:6800,ap:30,speed:70,
|
||||
6104:{uuid:6104,name:"兽人首领-射手",path:"mb4", fac:FacSet.MON,lv:6,type:HType.Melee,hp:6800,ap:30,speed:70,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow3].cd,ccd:0}},info:"近战位Boss,均衡型"},
|
||||
6105:{uuid:6105,name:"亡灵首领-法师",path:"mb5", fac:FacSet.MON,lv:6,type:HType.Long,hp:2600,ap:42,speed:110,
|
||||
skills:{6103:{uuid:6103,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow1].cd,ccd:0}},info:"远程高AP Boss"},
|
||||
6106:{uuid:6106,name:"亡灵首领-骑马战士",path:"mb6", fac:FacSet.MON,lv:6,type:HType.Melee,dis:360,hp:9000,ap:26,speed:130,
|
||||
6106:{uuid:6106,name:"亡灵首领-骑马战士",path:"mb6", fac:FacSet.MON,lv:6,type:HType.Melee,hp:9000,ap:26,speed:130,
|
||||
skills:{6005:{uuid:6005,lv:1,cd:AtkSpeedSet[AtkSpeedLv.VerySlow3].cd,ccd:0}},info:"终极Boss,最高HP+高速"},
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -125,17 +125,22 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
move.baseY = slot.targetY;
|
||||
move.targetX = slot.targetX;
|
||||
|
||||
// 战斗阶段不移动
|
||||
const canMove = !smc.mission.in_fight;
|
||||
|
||||
// 2. 平滑 Y 轴换路
|
||||
let isChangingLane = false;
|
||||
if (Math.abs(view.node.position.y - move.baseY) > 2) {
|
||||
const currentY = view.node.position.y;
|
||||
const deltaY = move.baseY - currentY;
|
||||
const step = 400 * this.dt; // 换路速度
|
||||
const newY = currentY + Math.sign(deltaY) * Math.min(Math.abs(deltaY), step);
|
||||
view.node.setPosition(view.node.position.x, newY, 0);
|
||||
isChangingLane = true;
|
||||
} else {
|
||||
view.node.setPosition(view.node.position.x, move.baseY, 0);
|
||||
if (canMove) {
|
||||
if (Math.abs(view.node.position.y - move.baseY) > 2) {
|
||||
const currentY = view.node.position.y;
|
||||
const deltaY = move.baseY - currentY;
|
||||
const step = 400 * this.dt; // 换路速度
|
||||
const newY = currentY + Math.sign(deltaY) * Math.min(Math.abs(deltaY), step);
|
||||
view.node.setPosition(view.node.position.x, newY, 0);
|
||||
isChangingLane = true;
|
||||
} else {
|
||||
view.node.setPosition(view.node.position.x, move.baseY, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// 渲染层级重排
|
||||
@@ -144,18 +149,31 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
const nearestEnemy = this.findNearestEnemy(e);
|
||||
if (nearestEnemy) {
|
||||
/** 有敌人:进入战斗位移逻辑 */
|
||||
this.processCombatLogic(e, move, view, model, nearestEnemy);
|
||||
if (canMove) {
|
||||
this.processCombatLogic(e, move, view, model, nearestEnemy);
|
||||
} else {
|
||||
model.is_atking = true; // 战斗中不移动,但保持攻击状态
|
||||
}
|
||||
this.syncCombatTarget(model, view, nearestEnemy);
|
||||
} else {
|
||||
/** 无敌人:清目标并回归编队站位 */
|
||||
this.clearCombatTarget(model);
|
||||
this.moveToSlot(view, move, model, move.targetX);
|
||||
if (canMove) {
|
||||
this.moveToSlot(view, move, model, move.targetX);
|
||||
}
|
||||
model.is_atking = false;
|
||||
}
|
||||
|
||||
// 如果只在 Y 轴移动,也要播放 move 动画
|
||||
if (isChangingLane && view.status !== "move" && view.status !== "atk") {
|
||||
view.status_change("move");
|
||||
if (canMove) {
|
||||
// 如果只在 Y 轴移动,也要播放 move 动画
|
||||
if (isChangingLane && view.status !== "move" && view.status !== "atk") {
|
||||
view.status_change("move");
|
||||
}
|
||||
} else {
|
||||
// 战斗阶段如果不移动,确保不在攻击时恢复 idle 状态
|
||||
if (!model.is_atking && view.status === "move") {
|
||||
view.status_change("idle");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
// 加载多语言包
|
||||
|
||||
@@ -1,46 +1,27 @@
|
||||
|
||||
import { mLogger } from "../common/Logger";
|
||||
import { _decorator, Animation, AnimationClip, EventTouch, Label, Node, NodeEventType, Sprite, SpriteAtlas, Tween, tween, UIOpacity, Vec3, resources, Light, UITransform, Widget, CCInteger } from "cc";
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||
import { _decorator, Animation, AnimationClip, EventTouch, Label, Node, NodeEventType, Sprite, SpriteAtlas, Tween, tween, UIOpacity, Vec3, resources, Light, UITransform, Widget, CCInteger, CCString, Component } from "cc";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { UIID } from "../common/config/GameUIConfig";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('GuideComp')
|
||||
@ecs.register('GuideComp', false)
|
||||
export class GuideComp extends CCComp {
|
||||
export class GuideComp extends Component {
|
||||
/** 是否开启调试日志 */
|
||||
private debugMode: boolean = true;
|
||||
|
||||
// ======================== 编辑器绑定节点 ========================
|
||||
|
||||
/** 手势图标节点 */
|
||||
@property(Node)
|
||||
hand: Node = null!
|
||||
|
||||
/** 引导编号 ID */
|
||||
@property({ type: CCInteger })
|
||||
guide_id: number = 0
|
||||
|
||||
|
||||
onLoad() {
|
||||
// 如果该引导已经完成,则隐藏并销毁本节点
|
||||
if (smc.finish_guides.includes(this.guide_id)) {
|
||||
this.node.active = false;
|
||||
this.node.destroy();
|
||||
return;
|
||||
}
|
||||
|
||||
// 监听手势节点点击事件
|
||||
if (this.hand) {
|
||||
this.hand.on(NodeEventType.TOUCH_START, this.onTouchStart, this);
|
||||
this.hand.on(NodeEventType.TOUCH_END, this.onGuideClick, this);
|
||||
} else {
|
||||
// 兜底:如果没有绑定手势节点,则监听自身节点
|
||||
this.node.on(NodeEventType.TOUCH_START, this.onTouchStart, this);
|
||||
this.node.on(NodeEventType.TOUCH_END, this.onGuideClick, this);
|
||||
}
|
||||
// 监听自身节点(即弹窗任意位置)的点击事件
|
||||
this.node.on(NodeEventType.TOUCH_START, this.onTouchStart, this);
|
||||
this.node.on(NodeEventType.TOUCH_END, this.onGuideClick, this);
|
||||
}
|
||||
|
||||
private onTouchStart(event: EventTouch) {
|
||||
@@ -61,17 +42,25 @@ export class GuideComp extends CCComp {
|
||||
// 允许事件穿透,确保底层的实际功能按钮能正常接收到点击事件
|
||||
event.preventSwallow = true;
|
||||
|
||||
// 完成后隐藏并销毁引导节点
|
||||
this.node.active = false;
|
||||
this.node.destroy();
|
||||
// 因为通过 oops.gui.open(UIID) 弹出的界面,根节点可能会带有一个阻挡点击的遮罩组件(BlockInputEvents)
|
||||
// 所以应当通过 oops.gui.remove 彻底从框架的层级管理中移除当前界面。
|
||||
let targetUIID = -1;
|
||||
if (this.guide_id === 1) targetUIID = UIID.Guide1;
|
||||
if (this.guide_id === 2) targetUIID = UIID.Guide2;
|
||||
if (this.guide_id === 3) targetUIID = UIID.Guide3;
|
||||
if (this.guide_id === 4) targetUIID = UIID.Guide4;
|
||||
|
||||
if (targetUIID !== -1) {
|
||||
oops.gui.remove(targetUIID);
|
||||
} else {
|
||||
// 兜底方案
|
||||
this.node.active = false;
|
||||
this.node.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
/** 组件销毁时解绑所有事件,防止残留回调 */
|
||||
onDestroy() {
|
||||
if (this.hand && this.hand.isValid) {
|
||||
this.hand.off(NodeEventType.TOUCH_START, this.onTouchStart, this);
|
||||
this.hand.off(NodeEventType.TOUCH_END, this.onGuideClick, this);
|
||||
}
|
||||
if (this.node && this.node.isValid) {
|
||||
this.node.off(NodeEventType.TOUCH_START, this.onTouchStart, this);
|
||||
this.node.off(NodeEventType.TOUCH_END, this.onGuideClick, this);
|
||||
@@ -82,11 +71,4 @@ export class GuideComp extends CCComp {
|
||||
init() {
|
||||
|
||||
}
|
||||
|
||||
/** ECS 组件移除时的释放钩子:销毁节点 */
|
||||
reset() {
|
||||
if (this.node && this.node.isValid) {
|
||||
this.node.destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": {}
|
||||
}
|
||||
@@ -49,6 +49,7 @@ import { FacSet, FightSet } from "../common/config/GameSet";
|
||||
import { MoveComp } from "../hero/MoveComp";
|
||||
import { MissionHeroComp } from "./MissionHeroComp";
|
||||
import { MissionEconomy } from "./MissionEconomy";
|
||||
import { UIID } from "../common/config/GameUIConfig";
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@@ -73,7 +74,7 @@ export class MissionCardComp extends CCComp {
|
||||
/** 按钮弹起缩放(峰值) */
|
||||
private readonly buttonClickScale: number = 1.06;
|
||||
/** 抽卡(刷新)费用 */
|
||||
refreshCost: number = 2;
|
||||
refreshCost: number = FightSet.REFRESH_COST;
|
||||
/** 卡牌面板展开/收起动画时长(秒) */
|
||||
cardsPanelMoveDuration: number = 0.2;
|
||||
|
||||
@@ -328,6 +329,12 @@ export class MissionCardComp extends CCComp {
|
||||
this.isBattlePhase = true;
|
||||
this.enterBattlePhase();
|
||||
this.clearAllCards();
|
||||
|
||||
// 第一次进入战斗阶段,关闭guide4
|
||||
if (!smc.finish_guides.includes(4)) {
|
||||
smc.finish_guides.push(4);
|
||||
oops.gui.remove(UIID.Guide4);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -411,6 +418,11 @@ export class MissionCardComp extends CCComp {
|
||||
const cards = this.buildSkillDrawCards();
|
||||
this.dispatchCardsToSkillSlots(cards);
|
||||
this.playSkillCardEnterAnim();
|
||||
|
||||
// 首次弹出技能三选一的时候弹出guide2
|
||||
if (!smc.finish_guides.includes(2)) {
|
||||
oops.gui.open(UIID.Guide2);
|
||||
}
|
||||
}
|
||||
|
||||
private dispatchCardsToSkillSlots(cards: CardConfig[]) {
|
||||
@@ -427,6 +439,24 @@ export class MissionCardComp extends CCComp {
|
||||
if (this.skill_card_node && this.skill_card_node.isValid) {
|
||||
this.skill_card_node.active = false;
|
||||
}
|
||||
|
||||
// 首次完成技能选取后 关闭guide2,打开guide3
|
||||
// 之前这里有个逻辑漏洞:玩家如果在弹出 guide2 之前就已经因为手快点掉了 guide2,
|
||||
// smc.finish_guides 里就会有 2。
|
||||
// 但其实这里的本意是:只要发生了选取技能,并且 guide3 还没弹过,就弹 guide3。
|
||||
// 如果我们把它包在 `if (!smc.finish_guides.includes(2))` 里,
|
||||
// 当玩家点击 guide2 把它关掉时(finish_guides 存入了 2),
|
||||
// 再点技能卡触发这个方法,外层 if 就会进不去,guide3 就永远弹不出来了!
|
||||
|
||||
// 修复:独立判断 guide2 的关闭 和 guide3 的开启
|
||||
if (!smc.finish_guides.includes(2)) {
|
||||
smc.finish_guides.push(2);
|
||||
oops.gui.remove(UIID.Guide2);
|
||||
}
|
||||
|
||||
if (!smc.finish_guides.includes(3)) {
|
||||
oops.gui.open(UIID.Guide3);
|
||||
}
|
||||
}
|
||||
|
||||
/** 解除按钮监听,避免节点销毁后回调泄漏 */
|
||||
@@ -474,6 +504,16 @@ export class MissionCardComp extends CCComp {
|
||||
const before = this.getAliveHeroCount();
|
||||
const after = this.getAliveHeroCount();
|
||||
this.updateHeroNumUI(true, after > before);
|
||||
|
||||
// 第一次召唤英雄后,关闭guide3,打开guide4
|
||||
if (!smc.finish_guides.includes(3)) {
|
||||
smc.finish_guides.push(3);
|
||||
oops.gui.remove(UIID.Guide3);
|
||||
}
|
||||
|
||||
if (!smc.finish_guides.includes(4)) {
|
||||
oops.gui.open(UIID.Guide4);
|
||||
}
|
||||
}
|
||||
|
||||
/** 英雄死亡事件回调:刷新面板列表并更新英雄数量 UI */
|
||||
@@ -603,6 +643,7 @@ export class MissionCardComp extends CCComp {
|
||||
}
|
||||
/** 抽卡按钮释放 → 执行抽卡逻辑 */
|
||||
private onDrawTouchEnd() {
|
||||
oops.audio.playEffect("music/button");
|
||||
this.playButtonClickAnim(this.cards_chou, () => this.onClickDraw());
|
||||
}
|
||||
/** 抽卡按钮取消 → 恢复缩放 */
|
||||
@@ -615,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() {
|
||||
@@ -625,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() {
|
||||
|
||||
@@ -88,12 +88,6 @@ export class MissionComp extends CCComp {
|
||||
private maxMonsterCount: number = 80;
|
||||
/** 怪物数量恢复阈值(降至此值以下恢复刷怪) */
|
||||
private resumeMonsterCount: number = 45;
|
||||
/** 新一波金币奖励基础值 */
|
||||
private prepareBaseCoinReward: number = 10;
|
||||
/** 每一波金币增长值(公式: base + (wave-1) * growth) */
|
||||
private prepareCoinWaveGrow: number = 4;
|
||||
/** 金币奖励上限(固定收益,此值不再生效) */
|
||||
private prepareCoinRewardCap: number = 100;
|
||||
/** 卡池升级波次配置:达到对应波次时,推送卡池升级事件 */
|
||||
@property({ type: [CCInteger], tooltip: "卡池升级波次配置,例如 [10, 20] 表示第10波升到2级,第20波升到3级" })
|
||||
cardPoolUpgradeWaves: number[] = [5, 10];
|
||||
@@ -123,7 +117,7 @@ export class MissionComp extends CCComp {
|
||||
|
||||
// ======================== 运行时状态 ========================
|
||||
|
||||
/** 战斗已耗时(秒),正向计时 */
|
||||
/** 本波战斗已耗时(秒),正向计时,用于自适应难度评估 */
|
||||
clearTime: number = 0
|
||||
/** 剩余复活次数 */
|
||||
revive_times: number = 1;
|
||||
@@ -248,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);
|
||||
@@ -313,6 +307,10 @@ export class MissionComp extends CCComp {
|
||||
loading.active = false
|
||||
}, 0.5)
|
||||
}
|
||||
|
||||
// 播放战斗背景音乐,并稍微降低音量
|
||||
oops.audio.volumeMusic = 0.5;
|
||||
oops.audio.playerMusicLoop("music/BATTLE");
|
||||
}
|
||||
|
||||
/** 更新开始按钮的状态显示 */
|
||||
@@ -402,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} 波`;
|
||||
}
|
||||
|
||||
// 阶段切换动感表现:只在进入战斗阶段跳动一下,让流程充满心流体验
|
||||
@@ -642,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();
|
||||
}
|
||||
|
||||
@@ -802,8 +802,9 @@ export class MissionComp extends CCComp {
|
||||
if (wave <= 1) return;
|
||||
if (wave <= this.lastPrepareCoinWave) return;
|
||||
|
||||
// 波次金币公式: baseReward + (wave-1) * waveGrow
|
||||
const waveReward = this.prepareBaseCoinReward + (wave - 1) * this.prepareCoinWaveGrow;
|
||||
// 波次金币公式: baseReward + (wave-1) * waveGrow,且不超过 prepareMaxCoinReward
|
||||
const calculatedReward = FightSet.WAVE_COIN_BASE + (wave - 1) * FightSet.WAVE_COIN_GROW;
|
||||
const waveReward = Math.min(FightSet.WAVE_COIN_MAX, calculatedReward);
|
||||
const reward = MissionEconomy.executeWaveGold(waveReward);
|
||||
|
||||
this.lastPrepareCoinWave = wave;
|
||||
|
||||
@@ -70,6 +70,11 @@ export class MissionHomeComp extends CCComp {
|
||||
/** 启动时显示主页 */
|
||||
start() {
|
||||
this.home_active()
|
||||
|
||||
// 首次打开游戏打开guide1
|
||||
if (!smc.finish_guides.includes(1)) {
|
||||
oops.gui.open(UIID.Guide1);
|
||||
}
|
||||
}
|
||||
|
||||
onEnable(){
|
||||
@@ -88,6 +93,13 @@ export class MissionHomeComp extends CCComp {
|
||||
*/
|
||||
start_mission() {
|
||||
mLogger.log(this.debugMode, 'MissionHomeComp', "start_mission")
|
||||
|
||||
// 进入战斗后,关闭guide1
|
||||
if (!smc.finish_guides.includes(1)) {
|
||||
smc.finish_guides.push(1);
|
||||
oops.gui.remove(UIID.Guide1);
|
||||
}
|
||||
|
||||
oops.gui.open(UIID.Mission)
|
||||
this.node.active=false;
|
||||
|
||||
@@ -144,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);
|
||||
|
||||
// 设置渲染排序
|
||||
|
||||
@@ -10,6 +10,37 @@
|
||||
* GDD: /gdd/rogue-spawning.md
|
||||
*/
|
||||
|
||||
/**
|
||||
* 玩家战力与经济推演估算 (前 20 波)
|
||||
* 规则:初始 4 金币,每波递增 1 金币,单波基础收益上限 10 金币。基础英雄 3 金币,刷新 1 金币。
|
||||
* 合成公式:3个 Lv1 = 1个 Lv2,3个 Lv2 = 1个 Lv3 (满级)。即 1个 Lv3 需要 9 个 Lv1。
|
||||
* 注:由于抽卡具有随机性,实际需要消耗部分金币刷新,以下推演假设约 20% 金币用于刷新,80% 用于购买。
|
||||
* 6 个坑位满编。
|
||||
*
|
||||
* 波次 | 当波收益 | 累计金币 | 累计购卡数 | 预估阵容 (极限最优) | 预估阵容 (脸黑/平滑型) | 阶段说明
|
||||
* -------------------------------------------------------------------------------------------------------------------------
|
||||
* W1 | 4 (初始) | 4 | 1 | 1*Lv1 | 1*Lv1 | 初始阶段
|
||||
* W2 | 5 | 9 | 2 | 2*Lv1 | 2*Lv1 | 积累英雄
|
||||
* W3 | 6 | 15 | 4 | 1*Lv2 + 1*Lv1 | 4*Lv1 | 开始成型
|
||||
* W4 | 7 | 22 | 6 | 2*Lv2 | 6*Lv1 | 刚好满编(6坑位)
|
||||
* W5 | 8 | 30 | 8 | 2*Lv2 + 2*Lv1 | 1*Lv2 + 5*Lv1 | 升阶开启
|
||||
* W6 | 9 | 39 | 10 | 1*Lv3 + 1*Lv1 | 2*Lv2 + 4*Lv1 | 首个满级核心出现
|
||||
* W7 | 10 | 49 | 13 | 1*Lv3 + 1*Lv2 | 3*Lv2 + 3*Lv1 | 阵型强化
|
||||
* W8 | 10(Max) | 59 | 15 | 1*Lv3 + 2*Lv2 | 4*Lv2 + 2*Lv1 |
|
||||
* W9 | 10 | 69 | 18 | 2*Lv3 | 6*Lv2 | 全员至少 Lv2
|
||||
* W10 | 10 | 79 | 21 | 2*Lv3 + 1*Lv2 | 1*Lv3 + 4*Lv2 + 1*Lv1 | (脸黑型开始超出6怪自然合成)
|
||||
* W11 | 10 | 89 | 23 | 2*Lv3 + 1*Lv2 + 1*Lv1 | 1*Lv3 + 5*Lv2 |
|
||||
* W12 | 10 | 99 | 26 | 2*Lv3 + 2*Lv2 + 1*Lv1 | 2*Lv3 + 2*Lv2 + 1*Lv1 | 双核心阵型确立
|
||||
* W13 | 10 | 109 | 29 | 3*Lv3 + 1*Lv1 | 2*Lv3 + 3*Lv2 + 1*Lv1 |
|
||||
* W14 | 10 | 119 | 31 | 3*Lv3 + 1*Lv2 + 1*Lv1 | 2*Lv3 + 4*Lv2 |
|
||||
* W15 | 10 | 129 | 34 | 3*Lv3 + 2*Lv2 + 1*Lv1 | 3*Lv3 + 2*Lv2 | 游戏后期,半数满级
|
||||
* W16 | 10 | 139 | 37 | 4*Lv3 + 1*Lv1 | 3*Lv3 + 3*Lv2 |
|
||||
* W17 | 10 | 149 | 39 | 4*Lv3 + 1*Lv2 | 4*Lv3 + 1*Lv2 |
|
||||
* W18 | 10 | 159 | 42 | 4*Lv3 + 2*Lv2 | 4*Lv3 + 1*Lv2 + 1*Lv1 |
|
||||
* W19 | 10 | 169 | 45 | 5*Lv3 | 5*Lv3 |
|
||||
* W20 | 10 | 179 | 47 | 5*Lv3 + 1*Lv1 | 5*Lv3 + 1*Lv1 | 大成阵型,接近全员满级
|
||||
*/
|
||||
|
||||
// ======================== 怪物类型枚举 ========================
|
||||
|
||||
/** 怪物类型(8 种) */
|
||||
@@ -247,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: 200, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long], isBossTier: false },
|
||||
2: { multiplier: 2.0, budget: 500, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support], isBossTier: true },
|
||||
3: { multiplier: 3.5, budget: 1100, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin], isBossTier: true },
|
||||
4: { multiplier: 5.5, budget: 2000, availableTypes: [MonType.Melee, MonType.Heavy, MonType.Long, MonType.Support, MonType.Assassin, MonType.Summoner], isBossTier: true },
|
||||
5: { multiplier: 8.5, budget: 3200, 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 },
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -362,14 +403,14 @@ export interface BlueprintTemplate {
|
||||
*/
|
||||
export const BlueprintTemplates: BlueprintTemplate[] = [
|
||||
{ id: "R1", type: TemplateType.REST, tierMin: 1, allowAffix: false,
|
||||
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 3, weight: 1.0 }] },
|
||||
slots: [{ typePool: [MonType.Melee], countMin: 1, countMax: 2, weight: 1.0 }] },
|
||||
{ id: "R2", type: TemplateType.REST, tierMin: 2, allowAffix: false,
|
||||
slots: [{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 1.0 }] },
|
||||
{ id: "R3", type: TemplateType.REST, tierMin: 3, allowAffix: false,
|
||||
slots: [{ typePool: [MonType.Melee, MonType.Long], countMin: 3, countMax: 5, weight: 1.0 }] },
|
||||
|
||||
{ id: "N1", type: TemplateType.NORMAL, tierMin: 1, allowAffix: false,
|
||||
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 3, weight: 1.0 }] },
|
||||
slots: [{ typePool: [MonType.Melee], countMin: 2, countMax: 4, weight: 1.0 }] },
|
||||
{ id: "N2", type: TemplateType.NORMAL, tierMin: 1, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Melee], countMin: 1, countMax: 3, weight: 0.6 },
|
||||
@@ -378,13 +419,13 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
|
||||
{ id: "N3", type: TemplateType.NORMAL, tierMin: 2, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 0.5 },
|
||||
{ typePool: [MonType.Long], countMin: 1, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Long], countMin: 1, countMax: 2, weight: 0.3 },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
|
||||
] },
|
||||
{ id: "N4", type: TemplateType.NORMAL, tierMin: 3, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.4 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3 },
|
||||
] },
|
||||
|
||||
@@ -396,26 +437,26 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
|
||||
] },
|
||||
{ id: "M2", type: TemplateType.MIXED, tierMin: 2, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.3 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 4, weight: 0.3 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.4 },
|
||||
] },
|
||||
{ id: "M3", type: TemplateType.MIXED, tierMin: 3, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 6, weight: 0.3 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.3 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.3 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Summoner], countMin: 1, countMax: 2, weight: 0.2 },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
|
||||
] },
|
||||
|
||||
{ id: "E1", type: TemplateType.ELITE, tierMin: 2, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Heavy], countMin: 1, countMax: 3, weight: 0.5, forceAffix: true },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 1, countMax: 3, weight: 0.5, forceAffix: true },
|
||||
{ typePool: [MonType.Heavy], countMin: 1, countMax: 2, weight: 0.5, forceAffix: true },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 1, countMax: 2, weight: 0.5, forceAffix: true },
|
||||
] },
|
||||
{ id: "E2", type: TemplateType.ELITE, tierMin: 3, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.Heavy], countMin: 1, countMax: 3, weight: 0.3, forceAffix: true },
|
||||
{ typePool: [MonType.Heavy], countMin: 1, countMax: 2, weight: 0.3, forceAffix: true },
|
||||
{ typePool: [MonType.Assassin], countMin: 2, countMax: 3, weight: 0.4, forceAffix: true },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3, forceAffix: true },
|
||||
] },
|
||||
@@ -430,24 +471,24 @@ export const BlueprintTemplates: BlueprintTemplate[] = [
|
||||
{ id: "B2", type: TemplateType.BOSS, tierMin: 2, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.MeleeBoss], countMin: 1, countMax: 1, weight: 1.0 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.5 },
|
||||
{ typePool: [MonType.Long, MonType.Support], countMin: 1, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 0.5 },
|
||||
{ typePool: [MonType.Long, MonType.Support], countMin: 1, countMax: 2, weight: 0.3 },
|
||||
{ typePool: [MonType.Assassin], countMin: 1, countMax: 2, weight: 0.2 },
|
||||
] },
|
||||
{ id: "B3", type: TemplateType.BOSS, tierMin: 3, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.MeleeBoss, MonType.LongBoss], countMin: 1, countMax: 1, weight: 1.0 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 3, countMax: 5, weight: 0.35 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 4, weight: 0.35 },
|
||||
{ typePool: [MonType.Melee, MonType.Heavy], countMin: 2, countMax: 4, weight: 0.35 },
|
||||
{ typePool: [MonType.Long, MonType.Assassin], countMin: 2, countMax: 3, weight: 0.35 },
|
||||
{ typePool: [MonType.Support], countMin: 1, countMax: 2, weight: 0.3 },
|
||||
] },
|
||||
{ id: "B4", type: TemplateType.BOSS, tierMin: 4, allowAffix: true,
|
||||
slots: [
|
||||
{ typePool: [MonType.MeleeBoss, MonType.LongBoss], countMin: 1, countMax: 1, weight: 1.0 },
|
||||
{ typePool: [MonType.Heavy], countMin: 2, countMax: 4, weight: 0.35 },
|
||||
{ typePool: [MonType.Heavy], countMin: 2, countMax: 3, weight: 0.35 },
|
||||
{ typePool: [MonType.Assassin], countMin: 2, countMax: 3, weight: 0.3 },
|
||||
{ typePool: [MonType.Summoner, MonType.Support], countMin: 1, countMax: 3, weight: 0.2 },
|
||||
{ typePool: [MonType.Melee], countMin: 2, countMax: 4, weight: 0.15 },
|
||||
{ typePool: [MonType.Summoner, MonType.Support], countMin: 1, countMax: 2, weight: 0.2 },
|
||||
{ typePool: [MonType.Melee], countMin: 1, countMax: 3, weight: 0.15 },
|
||||
] },
|
||||
|
||||
{ id: "TUTORIAL", type: TemplateType.NORMAL, tierMin: 1, allowAffix: false,
|
||||
@@ -494,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,
|
||||
}
|
||||
|
||||
// ======================== 向后兼容接口 ========================
|
||||
|
||||
/**
|
||||
@@ -543,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 }[];
|
||||
}
|
||||
}
|
||||
|
||||
// ======================== 生成引擎 ========================
|
||||
@@ -604,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