parent
abd9d76b99
commit
9a5592a40e
@ -0,0 +1,262 @@ |
||||
[ |
||||
{ |
||||
"__type__": "cc.Prefab", |
||||
"_name": "怪_中毒", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_native": "", |
||||
"data": { |
||||
"__id__": 1 |
||||
}, |
||||
"optimizationPolicy": 0, |
||||
"persistent": false |
||||
}, |
||||
{ |
||||
"__type__": "cc.Node", |
||||
"_name": "怪_中毒", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_parent": null, |
||||
"_children": [ |
||||
{ |
||||
"__id__": 2 |
||||
} |
||||
], |
||||
"_active": true, |
||||
"_components": [ |
||||
{ |
||||
"__id__": 10 |
||||
} |
||||
], |
||||
"_prefab": { |
||||
"__id__": 12 |
||||
}, |
||||
"_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": 33554432, |
||||
"_euler": { |
||||
"__type__": "cc.Vec3", |
||||
"x": 0, |
||||
"y": 0, |
||||
"z": 0 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.Node", |
||||
"_name": "anim", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_parent": { |
||||
"__id__": 1 |
||||
}, |
||||
"_children": [], |
||||
"_active": true, |
||||
"_components": [ |
||||
{ |
||||
"__id__": 3 |
||||
}, |
||||
{ |
||||
"__id__": 5 |
||||
}, |
||||
{ |
||||
"__id__": 7 |
||||
} |
||||
], |
||||
"_prefab": { |
||||
"__id__": 9 |
||||
}, |
||||
"_lpos": { |
||||
"__type__": "cc.Vec3", |
||||
"x": 0, |
||||
"y": 40.832, |
||||
"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": 33554432, |
||||
"_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": 105.44999694824219, |
||||
"height": 198.25999450683594 |
||||
}, |
||||
"_anchorPoint": { |
||||
"__type__": "cc.Vec2", |
||||
"x": 0.4653390338067923, |
||||
"y": 0.22924443671046482 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "03h5CL5PFEtKYvKtyo9JFN" |
||||
}, |
||||
{ |
||||
"__type__": "sp.Skeleton", |
||||
"_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 |
||||
}, |
||||
"_skeletonData": { |
||||
"__uuid__": "25a41a00-4bf7-4021-87d4-f8c80309ec53", |
||||
"__expectedType__": "sp.SkeletonData" |
||||
}, |
||||
"defaultSkin": "default", |
||||
"defaultAnimation": "animation", |
||||
"_premultipliedAlpha": false, |
||||
"_timeScale": 1, |
||||
"_preCacheMode": 2, |
||||
"_cacheMode": 2, |
||||
"_sockets": [], |
||||
"_useTint": false, |
||||
"_debugMesh": false, |
||||
"_debugBones": false, |
||||
"_debugSlots": false, |
||||
"_enableBatch": true, |
||||
"loop": true, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "3dGN5uYgVBA5YfZxnqBCr0" |
||||
}, |
||||
{ |
||||
"__type__": "cc.Sorting2D", |
||||
"_name": "", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"node": { |
||||
"__id__": 2 |
||||
}, |
||||
"_enabled": true, |
||||
"__prefab": { |
||||
"__id__": 8 |
||||
}, |
||||
"_sortingLayer": 4, |
||||
"_sortingOrder": 2, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "3eg+71aSNIHpRSdR16zp+r" |
||||
}, |
||||
{ |
||||
"__type__": "cc.PrefabInfo", |
||||
"root": { |
||||
"__id__": 1 |
||||
}, |
||||
"asset": { |
||||
"__id__": 0 |
||||
}, |
||||
"fileId": "b2X8MHIMdL4oWgMCIc8jCb", |
||||
"instance": null, |
||||
"targetOverrides": null, |
||||
"nestedPrefabInstanceRoots": null |
||||
}, |
||||
{ |
||||
"__type__": "cc.UITransform", |
||||
"_name": "", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"node": { |
||||
"__id__": 1 |
||||
}, |
||||
"_enabled": true, |
||||
"__prefab": { |
||||
"__id__": 11 |
||||
}, |
||||
"_contentSize": { |
||||
"__type__": "cc.Size", |
||||
"width": 100, |
||||
"height": 100 |
||||
}, |
||||
"_anchorPoint": { |
||||
"__type__": "cc.Vec2", |
||||
"x": 0.5, |
||||
"y": 0 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "8fKe6v5I1Jeq7/0RxYFv/t" |
||||
}, |
||||
{ |
||||
"__type__": "cc.PrefabInfo", |
||||
"root": { |
||||
"__id__": 1 |
||||
}, |
||||
"asset": { |
||||
"__id__": 0 |
||||
}, |
||||
"fileId": "ccwpiVeu1GJohxospbaLDW", |
||||
"instance": null, |
||||
"targetOverrides": null |
||||
} |
||||
] |
||||
@ -0,0 +1,13 @@ |
||||
{ |
||||
"ver": "1.1.50", |
||||
"importer": "prefab", |
||||
"imported": true, |
||||
"uuid": "27d71c32-ea24-42f6-bc98-4b6d07251929", |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": { |
||||
"syncNodeName": "怪_中毒" |
||||
} |
||||
} |
||||
@ -0,0 +1,262 @@ |
||||
[ |
||||
{ |
||||
"__type__": "cc.Prefab", |
||||
"_name": "冰球", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_native": "", |
||||
"data": { |
||||
"__id__": 1 |
||||
}, |
||||
"optimizationPolicy": 0, |
||||
"persistent": false |
||||
}, |
||||
{ |
||||
"__type__": "cc.Node", |
||||
"_name": "冰球", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_parent": null, |
||||
"_children": [ |
||||
{ |
||||
"__id__": 2 |
||||
} |
||||
], |
||||
"_active": true, |
||||
"_components": [ |
||||
{ |
||||
"__id__": 10 |
||||
} |
||||
], |
||||
"_prefab": { |
||||
"__id__": 12 |
||||
}, |
||||
"_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": 33554432, |
||||
"_euler": { |
||||
"__type__": "cc.Vec3", |
||||
"x": 0, |
||||
"y": 0, |
||||
"z": 0 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.Node", |
||||
"_name": "冰球陨石", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"_parent": { |
||||
"__id__": 1 |
||||
}, |
||||
"_children": [], |
||||
"_active": true, |
||||
"_components": [ |
||||
{ |
||||
"__id__": 3 |
||||
}, |
||||
{ |
||||
"__id__": 5 |
||||
}, |
||||
{ |
||||
"__id__": 7 |
||||
} |
||||
], |
||||
"_prefab": { |
||||
"__id__": 9 |
||||
}, |
||||
"_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": 33554432, |
||||
"_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": 622.1900024414062, |
||||
"height": 413.239990234375 |
||||
}, |
||||
"_anchorPoint": { |
||||
"__type__": "cc.Vec2", |
||||
"x": 0.10895385758293562, |
||||
"y": 0.44748814862778713 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "179HuDnA9Jo7TgGvC9xZhc" |
||||
}, |
||||
{ |
||||
"__type__": "sp.Skeleton", |
||||
"_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 |
||||
}, |
||||
"_skeletonData": { |
||||
"__uuid__": "781dbed2-3bf9-4e54-bdba-cb12c23529ec", |
||||
"__expectedType__": "sp.SkeletonData" |
||||
}, |
||||
"defaultSkin": "default", |
||||
"defaultAnimation": "animation", |
||||
"_premultipliedAlpha": false, |
||||
"_timeScale": 1, |
||||
"_preCacheMode": 0, |
||||
"_cacheMode": 0, |
||||
"_sockets": [], |
||||
"_useTint": false, |
||||
"_debugMesh": false, |
||||
"_debugBones": false, |
||||
"_debugSlots": false, |
||||
"_enableBatch": false, |
||||
"loop": true, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "a8P1wKkP9DwKwfmMn/qsjD" |
||||
}, |
||||
{ |
||||
"__type__": "cc.Sorting2D", |
||||
"_name": "", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"node": { |
||||
"__id__": 2 |
||||
}, |
||||
"_enabled": true, |
||||
"__prefab": { |
||||
"__id__": 8 |
||||
}, |
||||
"_sortingLayer": 4, |
||||
"_sortingOrder": 0, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "22RwYWwElLeJ6kJ0xw9tQg" |
||||
}, |
||||
{ |
||||
"__type__": "cc.PrefabInfo", |
||||
"root": { |
||||
"__id__": 1 |
||||
}, |
||||
"asset": { |
||||
"__id__": 0 |
||||
}, |
||||
"fileId": "f5NqVBVAFNbqc4oknHHrnQ", |
||||
"instance": null, |
||||
"targetOverrides": null, |
||||
"nestedPrefabInstanceRoots": null |
||||
}, |
||||
{ |
||||
"__type__": "cc.UITransform", |
||||
"_name": "", |
||||
"_objFlags": 0, |
||||
"__editorExtras__": {}, |
||||
"node": { |
||||
"__id__": 1 |
||||
}, |
||||
"_enabled": true, |
||||
"__prefab": { |
||||
"__id__": 11 |
||||
}, |
||||
"_contentSize": { |
||||
"__type__": "cc.Size", |
||||
"width": 200, |
||||
"height": 200 |
||||
}, |
||||
"_anchorPoint": { |
||||
"__type__": "cc.Vec2", |
||||
"x": 0.5, |
||||
"y": 0.5 |
||||
}, |
||||
"_id": "" |
||||
}, |
||||
{ |
||||
"__type__": "cc.CompPrefabInfo", |
||||
"fileId": "451RzMpQpFLalWlPKOafD2" |
||||
}, |
||||
{ |
||||
"__type__": "cc.PrefabInfo", |
||||
"root": { |
||||
"__id__": 1 |
||||
}, |
||||
"asset": { |
||||
"__id__": 0 |
||||
}, |
||||
"fileId": "38JEit66ZI+Y7iGQ+17T7W", |
||||
"instance": null, |
||||
"targetOverrides": null |
||||
} |
||||
] |
||||
@ -0,0 +1,13 @@ |
||||
{ |
||||
"ver": "1.1.50", |
||||
"importer": "prefab", |
||||
"imported": true, |
||||
"uuid": "e5090e75-028c-4066-87d5-ab02f82fcaff", |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": { |
||||
"syncNodeName": "冰球" |
||||
} |
||||
} |
||||
@ -0,0 +1,139 @@ |
||||
|
||||
中毒效果.png |
||||
size: 698,329 |
||||
format: RGBA8888 |
||||
filter: Linear,Linear |
||||
repeat: none |
||||
无标题1 |
||||
rotate: false |
||||
xy: 601, 11 |
||||
size: 69, 87 |
||||
orig: 74, 92 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题10 |
||||
rotate: false |
||||
xy: 103, 156 |
||||
size: 77, 173 |
||||
orig: 81, 178 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题11 |
||||
rotate: false |
||||
xy: 263, 159 |
||||
size: 77, 170 |
||||
orig: 81, 176 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题12 |
||||
rotate: false |
||||
xy: 451, 4 |
||||
size: 76, 161 |
||||
orig: 81, 167 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题13 |
||||
rotate: false |
||||
xy: 222, 4 |
||||
size: 74, 151 |
||||
orig: 79, 157 |
||||
offset: 3, 3 |
||||
index: -1 |
||||
无标题14 |
||||
rotate: false |
||||
xy: 376, 27 |
||||
size: 73, 131 |
||||
orig: 77, 136 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题15 |
||||
rotate: false |
||||
xy: 342, 160 |
||||
size: 74, 169 |
||||
orig: 78, 175 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题16 |
||||
rotate: false |
||||
xy: 418, 167 |
||||
size: 74, 162 |
||||
orig: 79, 166 |
||||
offset: 3, 2 |
||||
index: -1 |
||||
无标题17 |
||||
rotate: false |
||||
xy: 150, 0 |
||||
size: 70, 154 |
||||
orig: 74, 160 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题18 |
||||
rotate: false |
||||
xy: 529, 7 |
||||
size: 70, 91 |
||||
orig: 74, 96 |
||||
offset: 2, 2 |
||||
index: -1 |
||||
无标题2 |
||||
rotate: false |
||||
xy: 494, 198 |
||||
size: 71, 131 |
||||
orig: 77, 137 |
||||
offset: 3, 4 |
||||
index: -1 |
||||
无标题3 |
||||
rotate: true |
||||
xy: 567, 260 |
||||
size: 69, 131 |
||||
orig: 73, 136 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题4 |
||||
rotate: false |
||||
xy: 0, 1 |
||||
size: 72, 135 |
||||
orig: 76, 139 |
||||
offset: 2, 2 |
||||
index: -1 |
||||
无标题5 |
||||
rotate: false |
||||
xy: 74, 3 |
||||
size: 74, 133 |
||||
orig: 79, 138 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题6 |
||||
rotate: false |
||||
xy: 298, 25 |
||||
size: 76, 132 |
||||
orig: 80, 138 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题7 |
||||
rotate: true |
||||
xy: 567, 180 |
||||
size: 78, 130 |
||||
orig: 83, 135 |
||||
offset: 2, 2 |
||||
index: -1 |
||||
无标题8 |
||||
rotate: true |
||||
xy: 529, 100 |
||||
size: 78, 123 |
||||
orig: 83, 128 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
无标题9 |
||||
rotate: false |
||||
xy: 182, 157 |
||||
size: 79, 172 |
||||
orig: 83, 178 |
||||
offset: 2, 3 |
||||
index: -1 |
||||
毒雾 |
||||
rotate: false |
||||
xy: 0, 138 |
||||
size: 101, 191 |
||||
orig: 101, 196 |
||||
offset: 0, 5 |
||||
index: -1 |
||||
@ -0,0 +1,12 @@ |
||||
{ |
||||
"ver": "1.0.0", |
||||
"importer": "*", |
||||
"imported": true, |
||||
"uuid": "c7574f4d-50fa-49f3-9ffd-f193fac7ee9c", |
||||
"files": [ |
||||
".atlas", |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": {} |
||||
} |
||||
@ -0,0 +1 @@ |
||||
{"skeleton":{"hash":"ae4vm7m4zHliUH2j9YM0oDF2390","spine":"3.8.75","x":-49.07,"y":-45.45,"width":105.45,"height":198.26,"images":"./images/","audio":"E:/工作文件/1项目汇总/5战斗游戏/【新】数字大作战/动效/局内效果/毒物"},"bones":[{"name":"root"},{"name":"毒物","parent":"root","length":38.78,"rotation":0.83,"x":1.53,"y":-13.42,"scaleY":0.8306},{"name":"毒雾","parent":"root","length":71.22,"rotation":89.76,"x":3.43,"y":-14.19},{"name":"毒雾2","parent":"root","length":71.22,"rotation":89.76,"x":3.43,"y":-14.19,"scaleY":-1}],"slots":[{"name":"毒物","bone":"毒物","attachment":"无标题1"},{"name":"毒雾","bone":"毒雾","attachment":"毒雾"},{"name":"毒雾2","bone":"毒雾2","attachment":"毒雾"}],"skins":[{"name":"default","attachments":{"毒雾2":{"毒雾":{"x":67.87,"y":-0.05,"rotation":-88.93,"width":101,"height":196}},"毒物":{"无标题1":{"x":0.68,"y":32.14,"rotation":-0.95,"width":74,"height":92},"无标题2":{"x":-0.06,"y":15.65,"rotation":-0.83,"width":77,"height":137},"无标题3":{"x":1.01,"y":20.64,"rotation":-0.83,"width":73,"height":136},"无标题4":{"x":-0.39,"y":27.16,"rotation":-0.83,"width":76,"height":139},"无标题5":{"x":0.21,"y":34.15,"rotation":-0.83,"width":79,"height":138},"无标题6":{"x":0.79,"y":40.14,"rotation":-0.83,"width":80,"height":138},"无标题7":{"x":1.39,"y":46.64,"rotation":-0.83,"width":83,"height":135},"无标题8":{"x":1.48,"y":53.13,"rotation":-0.83,"width":83,"height":128},"无标题9":{"x":2.17,"y":31.62,"rotation":-0.83,"width":83,"height":178},"无标题10":{"x":0.21,"y":34.15,"rotation":-0.83,"width":81,"height":178},"无标题11":{"x":0.27,"y":38.65,"rotation":-0.83,"width":81,"height":176},"无标题12":{"x":0.37,"y":45.65,"rotation":-0.83,"width":81,"height":167},"无标题13":{"x":-0.54,"y":51.66,"rotation":-0.83,"width":79,"height":157},"无标题14":{"x":-0.5,"y":54.16,"rotation":-0.83,"width":77,"height":136},"无标题15":{"x":-0.23,"y":38.16,"rotation":-0.83,"width":78,"height":175},"无标题16":{"x":0.36,"y":44.65,"rotation":-0.83,"width":79,"height":166},"无标题17":{"x":-0.06,"y":50.16,"rotation":-0.83,"width":74,"height":160},"无标题18":{"x":0.59,"y":26.14,"rotation":-0.83,"width":74,"height":96}},"毒雾":{"毒雾":{"x":67.87,"y":-0.05,"rotation":-88.93,"width":101,"height":196}}}}],"animations":{"animation":{"slots":{"毒雾":{"color":[{"color":"ffffff00"},{"time":0.6,"color":"ffffffff"},{"time":1.2333,"color":"ffffff00"}]},"毒雾2":{"color":[{"color":"ffffffff"},{"time":0.6333,"color":"ffffff00"},{"time":1.2333,"color":"ffffffff"}]},"毒物":{"attachment":[{"time":0.0667,"name":"无标题2"},{"time":0.1333,"name":"无标题3"},{"time":0.2,"name":"无标题4"},{"time":0.2667,"name":"无标题5"},{"time":0.3333,"name":"无标题6"},{"time":0.4,"name":"无标题7"},{"time":0.4667,"name":"无标题8"},{"time":0.5333,"name":"无标题9"},{"time":0.6,"name":"无标题10"},{"time":0.7,"name":"无标题11"},{"time":0.7667,"name":"无标题12"},{"time":0.8333,"name":"无标题13"},{"time":0.9,"name":"无标题14"},{"time":0.9667,"name":"无标题15"},{"time":1.0667,"name":"无标题16"},{"time":1.1333,"name":"无标题17"},{"time":1.2,"name":"无标题18"}]}},"bones":{"毒雾":{"translate":[{"x":-1.58,"y":-23.25}],"scale":[{"x":0.752},{"time":1.2},{"time":1.2333,"x":0.752}]},"毒雾2":{"translate":[{"x":-1.58,"y":-23.25}],"scale":[{"x":0.876},{"time":0.6},{"time":0.6333,"x":0.752},{"time":1.2333,"x":0.876}]}}}}} |
||||
@ -0,0 +1,13 @@ |
||||
{ |
||||
"ver": "1.2.7", |
||||
"importer": "spine-data", |
||||
"imported": true, |
||||
"uuid": "25a41a00-4bf7-4021-87d4-f8c80309ec53", |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": { |
||||
"atlasUuid": "c7574f4d-50fa-49f3-9ffd-f193fac7ee9c" |
||||
} |
||||
} |
||||
|
After Width: | Height: | Size: 248 KiB |
@ -0,0 +1,134 @@ |
||||
{ |
||||
"ver": "1.0.27", |
||||
"importer": "image", |
||||
"imported": true, |
||||
"uuid": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801", |
||||
"files": [ |
||||
".json", |
||||
".png" |
||||
], |
||||
"subMetas": { |
||||
"6c48a": { |
||||
"importer": "texture", |
||||
"uuid": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801@6c48a", |
||||
"displayName": "中毒效果", |
||||
"id": "6c48a", |
||||
"name": "texture", |
||||
"userData": { |
||||
"wrapModeS": "clamp-to-edge", |
||||
"wrapModeT": "clamp-to-edge", |
||||
"imageUuidOrDatabaseUri": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801", |
||||
"isUuid": true, |
||||
"visible": false, |
||||
"minfilter": "linear", |
||||
"magfilter": "linear", |
||||
"mipfilter": "none", |
||||
"anisotropy": 0 |
||||
}, |
||||
"ver": "1.0.22", |
||||
"imported": true, |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {} |
||||
}, |
||||
"f9941": { |
||||
"importer": "sprite-frame", |
||||
"uuid": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801@f9941", |
||||
"displayName": "中毒效果", |
||||
"id": "f9941", |
||||
"name": "spriteFrame", |
||||
"userData": { |
||||
"trimThreshold": 1, |
||||
"rotated": false, |
||||
"offsetX": 0, |
||||
"offsetY": 0, |
||||
"trimX": 0, |
||||
"trimY": 0, |
||||
"width": 698, |
||||
"height": 329, |
||||
"rawWidth": 698, |
||||
"rawHeight": 329, |
||||
"borderTop": 0, |
||||
"borderBottom": 0, |
||||
"borderLeft": 0, |
||||
"borderRight": 0, |
||||
"packable": true, |
||||
"pixelsToUnit": 100, |
||||
"pivotX": 0.5, |
||||
"pivotY": 0.5, |
||||
"meshType": 0, |
||||
"vertices": { |
||||
"rawPosition": [ |
||||
-349, |
||||
-164.5, |
||||
0, |
||||
349, |
||||
-164.5, |
||||
0, |
||||
-349, |
||||
164.5, |
||||
0, |
||||
349, |
||||
164.5, |
||||
0 |
||||
], |
||||
"indexes": [ |
||||
0, |
||||
1, |
||||
2, |
||||
2, |
||||
1, |
||||
3 |
||||
], |
||||
"uv": [ |
||||
0, |
||||
329, |
||||
698, |
||||
329, |
||||
0, |
||||
0, |
||||
698, |
||||
0 |
||||
], |
||||
"nuv": [ |
||||
0, |
||||
0, |
||||
1, |
||||
0, |
||||
0, |
||||
1, |
||||
1, |
||||
1 |
||||
], |
||||
"minPos": [ |
||||
-349, |
||||
-164.5, |
||||
0 |
||||
], |
||||
"maxPos": [ |
||||
349, |
||||
164.5, |
||||
0 |
||||
] |
||||
}, |
||||
"isUuid": true, |
||||
"imageUuidOrDatabaseUri": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801@6c48a", |
||||
"atlasUuid": "", |
||||
"trimType": "auto" |
||||
}, |
||||
"ver": "1.0.12", |
||||
"imported": true, |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {} |
||||
} |
||||
}, |
||||
"userData": { |
||||
"type": "sprite-frame", |
||||
"fixAlphaTransparencyArtifacts": false, |
||||
"hasAlpha": true, |
||||
"redirect": "12a7084a-71ac-476f-8fdd-c6ec2a3dd801@6c48a" |
||||
} |
||||
} |
||||
@ -0,0 +1,9 @@ |
||||
{ |
||||
"ver": "1.2.0", |
||||
"importer": "directory", |
||||
"imported": true, |
||||
"uuid": "6f2bef0b-9419-4eee-84fb-01fd55a1715e", |
||||
"files": [], |
||||
"subMetas": {}, |
||||
"userData": {} |
||||
} |
||||
@ -0,0 +1 @@ |
||||
D:\WXWork\1688855084654441\WeDrive\中昱智云\抖音游戏\战斗类\【新】扑克牌请神\动效\局内效果\陨落冰球 |
||||
@ -0,0 +1,139 @@ |
||||
|
||||
冰球陨石.png |
||||
size: 650,518 |
||||
format: RGBA8888 |
||||
filter: Linear,Linear |
||||
repeat: none |
||||
冰球 |
||||
rotate: true |
||||
xy: 528, 394 |
||||
size: 124, 119 |
||||
orig: 126, 121 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
冲击波 |
||||
rotate: false |
||||
xy: 0, 299 |
||||
size: 526, 219 |
||||
orig: 535, 237 |
||||
offset: 3, 7 |
||||
index: -1 |
||||
图层 1179 |
||||
rotate: false |
||||
xy: 410, 265 |
||||
size: 29, 32 |
||||
orig: 31, 34 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1180 |
||||
rotate: true |
||||
xy: 603, 255 |
||||
size: 50, 45 |
||||
orig: 52, 47 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1181 |
||||
rotate: false |
||||
xy: 441, 261 |
||||
size: 12, 15 |
||||
orig: 14, 17 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1182 |
||||
rotate: true |
||||
xy: 441, 278 |
||||
size: 19, 17 |
||||
orig: 21, 19 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1183 |
||||
rotate: false |
||||
xy: 455, 264 |
||||
size: 10, 12 |
||||
orig: 12, 14 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1184 |
||||
rotate: false |
||||
xy: 291, 261 |
||||
size: 43, 36 |
||||
orig: 45, 38 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1185 |
||||
rotate: false |
||||
xy: 609, 354 |
||||
size: 41, 38 |
||||
orig: 43, 40 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1186 |
||||
rotate: true |
||||
xy: 420, 41 |
||||
size: 62, 57 |
||||
orig: 65, 59 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1187 |
||||
rotate: false |
||||
xy: 479, 51 |
||||
size: 52, 52 |
||||
orig: 54, 54 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1188 |
||||
rotate: true |
||||
xy: 336, 264 |
||||
size: 33, 44 |
||||
orig: 35, 46 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1189 |
||||
rotate: false |
||||
xy: 382, 264 |
||||
size: 26, 33 |
||||
orig: 29, 35 |
||||
offset: 2, 1 |
||||
index: -1 |
||||
图层 1190 |
||||
rotate: true |
||||
xy: 528, 329 |
||||
size: 63, 79 |
||||
orig: 65, 81 |
||||
offset: 1, 1 |
||||
index: -1 |
||||
图层 1191 |
||||
rotate: false |
||||
xy: 528, 261 |
||||
size: 73, 66 |
||||
orig: 75, 71 |
||||
offset: 1, 4 |
||||
index: -1 |
||||
图层 1192 |
||||
rotate: false |
||||
xy: 609, 307 |
||||
size: 40, 45 |
||||
orig: 56, 47 |
||||
offset: 15, 1 |
||||
index: -1 |
||||
拖尾 |
||||
rotate: true |
||||
xy: 420, 105 |
||||
size: 148, 224 |
||||
orig: 152, 239 |
||||
offset: 2, 9 |
||||
index: -1 |
||||
法阵11 |
||||
rotate: true |
||||
xy: 0, 3 |
||||
size: 294, 289 |
||||
orig: 296, 290 |
||||
offset: 1, 0 |
||||
index: -1 |
||||
裂隙 |
||||
rotate: true |
||||
xy: 291, 0 |
||||
size: 253, 127 |
||||
orig: 272, 130 |
||||
offset: 18, 1 |
||||
index: -1 |
||||
@ -0,0 +1,12 @@ |
||||
{ |
||||
"ver": "1.0.0", |
||||
"importer": "*", |
||||
"imported": true, |
||||
"uuid": "0569be0e-0391-4613-a3c9-3ef1407de3c7", |
||||
"files": [ |
||||
".atlas", |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": {} |
||||
} |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@ |
||||
{ |
||||
"ver": "1.2.7", |
||||
"importer": "spine-data", |
||||
"imported": true, |
||||
"uuid": "781dbed2-3bf9-4e54-bdba-cb12c23529ec", |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {}, |
||||
"userData": { |
||||
"atlasUuid": "0569be0e-0391-4613-a3c9-3ef1407de3c7" |
||||
} |
||||
} |
||||
|
After Width: | Height: | Size: 456 KiB |
@ -0,0 +1,134 @@ |
||||
{ |
||||
"ver": "1.0.27", |
||||
"importer": "image", |
||||
"imported": true, |
||||
"uuid": "016b4c5e-2cc0-4f67-92b1-7451af8adac5", |
||||
"files": [ |
||||
".json", |
||||
".png" |
||||
], |
||||
"subMetas": { |
||||
"6c48a": { |
||||
"importer": "texture", |
||||
"uuid": "016b4c5e-2cc0-4f67-92b1-7451af8adac5@6c48a", |
||||
"displayName": "冰球陨石", |
||||
"id": "6c48a", |
||||
"name": "texture", |
||||
"userData": { |
||||
"wrapModeS": "clamp-to-edge", |
||||
"wrapModeT": "clamp-to-edge", |
||||
"imageUuidOrDatabaseUri": "016b4c5e-2cc0-4f67-92b1-7451af8adac5", |
||||
"isUuid": true, |
||||
"visible": false, |
||||
"minfilter": "linear", |
||||
"magfilter": "linear", |
||||
"mipfilter": "none", |
||||
"anisotropy": 0 |
||||
}, |
||||
"ver": "1.0.22", |
||||
"imported": true, |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {} |
||||
}, |
||||
"f9941": { |
||||
"importer": "sprite-frame", |
||||
"uuid": "016b4c5e-2cc0-4f67-92b1-7451af8adac5@f9941", |
||||
"displayName": "冰球陨石", |
||||
"id": "f9941", |
||||
"name": "spriteFrame", |
||||
"userData": { |
||||
"trimThreshold": 1, |
||||
"rotated": false, |
||||
"offsetX": 0, |
||||
"offsetY": 0, |
||||
"trimX": 0, |
||||
"trimY": 0, |
||||
"width": 650, |
||||
"height": 518, |
||||
"rawWidth": 650, |
||||
"rawHeight": 518, |
||||
"borderTop": 0, |
||||
"borderBottom": 0, |
||||
"borderLeft": 0, |
||||
"borderRight": 0, |
||||
"packable": true, |
||||
"pixelsToUnit": 100, |
||||
"pivotX": 0.5, |
||||
"pivotY": 0.5, |
||||
"meshType": 0, |
||||
"vertices": { |
||||
"rawPosition": [ |
||||
-325, |
||||
-259, |
||||
0, |
||||
325, |
||||
-259, |
||||
0, |
||||
-325, |
||||
259, |
||||
0, |
||||
325, |
||||
259, |
||||
0 |
||||
], |
||||
"indexes": [ |
||||
0, |
||||
1, |
||||
2, |
||||
2, |
||||
1, |
||||
3 |
||||
], |
||||
"uv": [ |
||||
0, |
||||
518, |
||||
650, |
||||
518, |
||||
0, |
||||
0, |
||||
650, |
||||
0 |
||||
], |
||||
"nuv": [ |
||||
0, |
||||
0, |
||||
1, |
||||
0, |
||||
0, |
||||
1, |
||||
1, |
||||
1 |
||||
], |
||||
"minPos": [ |
||||
-325, |
||||
-259, |
||||
0 |
||||
], |
||||
"maxPos": [ |
||||
325, |
||||
259, |
||||
0 |
||||
] |
||||
}, |
||||
"isUuid": true, |
||||
"imageUuidOrDatabaseUri": "016b4c5e-2cc0-4f67-92b1-7451af8adac5@6c48a", |
||||
"atlasUuid": "", |
||||
"trimType": "auto" |
||||
}, |
||||
"ver": "1.0.12", |
||||
"imported": true, |
||||
"files": [ |
||||
".json" |
||||
], |
||||
"subMetas": {} |
||||
} |
||||
}, |
||||
"userData": { |
||||
"type": "sprite-frame", |
||||
"fixAlphaTransparencyArtifacts": false, |
||||
"hasAlpha": true, |
||||
"redirect": "016b4c5e-2cc0-4f67-92b1-7451af8adac5@6c48a" |
||||
} |
||||
} |
||||
@ -0,0 +1,271 @@ |
||||
import { isValid, Node, UITransform, Vec3, sp } from 'cc'; |
||||
import type { EntityId } from 'db://assets/mx/module/ecs'; |
||||
import { TransformComp } from 'db://assets/mx/module/battle/ecs/Components'; |
||||
import { GBundle, GPath } from '../../game/ConfigRes'; |
||||
import { logicalWorldToCocos } from '../bridge/CocosBattleMovementBridge'; |
||||
import type { Skill } from '../skill/Skill'; |
||||
import { SkillPresentationEnv } from '../skill/SkillPresentationEnv'; |
||||
import type { SkillPresentationContext } from '../skill/SkillPresentationTypes'; |
||||
import type { ISkillPresenter } from './SkillPresenter'; |
||||
import { BattleSpinePlayback } from './BattleSpinePlayback'; |
||||
import { buildShadowDealContext } from './SkillShadowContext'; |
||||
import { logicPosOf, pulseHostileCircle } from './ThrownCircleAtkPresenter'; |
||||
|
||||
/** 冰球术 Skill.id(Battlebuff 3052) */ |
||||
export const ICE_BALL_SKILL_ID = 305201; |
||||
|
||||
/** battleHero/prefab/skill/冰球 */ |
||||
const ICE_BALL_PREFAB = '冰球'; |
||||
/** 默认动画名 */ |
||||
const ICE_BALL_ANIM = 'animation'; |
||||
/** Spine「冰球」附件卸下时刻兜底(爆炸) */ |
||||
const ICE_BALL_EXPLODE_FALLBACK = 1.1667; |
||||
/** 整段动画时长兜底 */ |
||||
const ICE_BALL_DURATION_FALLBACK = 2; |
||||
/** 影子伤害类型 */ |
||||
const ICE_BALL_DMG = 'ice_ball'; |
||||
|
||||
/** |
||||
* 是否冰球术 Skill.id。 |
||||
* @param skillId Skill.id |
||||
*/ |
||||
export function isIceBallSkillId(skillId: number): boolean { |
||||
return Math.floor(Number(skillId) || 0) === ICE_BALL_SKILL_ID; |
||||
} |
||||
|
||||
/** 一次陨落冰球 */ |
||||
interface IceBallRun { |
||||
/** 施法者 */ |
||||
caster: EntityId; |
||||
/** 影子伤害上下文 */ |
||||
ctx: SkillPresentationContext; |
||||
/** 圆心逻辑 X */ |
||||
x: number; |
||||
/** 圆心逻辑 Y */ |
||||
y: number; |
||||
/** 半径像素 */ |
||||
radius: number; |
||||
/** 伤害倍率 */ |
||||
scale: number; |
||||
/** 距爆炸剩余秒 */ |
||||
explodeWait: number; |
||||
/** 爆炸后距回池剩余秒 */ |
||||
endWait: number; |
||||
/** 是否已结算爆炸伤害 */ |
||||
exploded: boolean; |
||||
/** 冰球节点 */ |
||||
node: Node | null; |
||||
} |
||||
|
||||
let _host: IceBallHost | null = null; |
||||
|
||||
/** 冰球术表现宿主 */ |
||||
export function getIceBallHost(): IceBallHost { |
||||
if (!_host) _host = new IceBallHost(); |
||||
return _host; |
||||
} |
||||
|
||||
/** |
||||
* Skill 305201:释放施法锁后在主目标落点生成「冰球」,动画近结束爆炸并圈伤。 |
||||
*/ |
||||
export class IceBallAtkPresenter implements ISkillPresenter { |
||||
present(ctx: SkillPresentationContext, host: Skill): void { |
||||
if (!ctx.isAlive) { |
||||
ctx.finish(); |
||||
return; |
||||
} |
||||
const seq = host.beginPresentationCast(ctx); |
||||
if (!(seq > 0)) return; |
||||
host.disarmAnimComplete(); |
||||
getIceBallHost().start(ctx); |
||||
ctx.releasePresentationLock(); |
||||
host.finishPresentationCast(seq, false); |
||||
} |
||||
} |
||||
|
||||
/** 冰球陨落:独立计时爆炸圈伤 */ |
||||
export class IceBallHost { |
||||
private readonly _runs: IceBallRun[] = []; |
||||
private _activePulse: IceBallRun | null = null; |
||||
|
||||
/** |
||||
* 开战:锁定落点并生成冰球。 |
||||
* @param ctx 表现上下文 |
||||
*/ |
||||
start(ctx: SkillPresentationContext): void { |
||||
const parts = String(ctx.params.atkPara ?? '').split(',').map(Number); |
||||
const radius = parts[0]; |
||||
const wan = parts[1]; |
||||
if (!(radius > 0) || !Number.isFinite(wan) || !(wan > 0)) { |
||||
console.log('[IceBall] atk_para 无效', ctx.params.skillId, ctx.params.atkPara); |
||||
return; |
||||
} |
||||
const session = SkillPresentationEnv.getBattleSession(); |
||||
if (!session) { |
||||
console.log('[IceBall] 无战斗会话', ctx.params.skillId); |
||||
return; |
||||
} |
||||
const primary = ctx.targets[0] ?? 0; |
||||
const lockId = primary > 0 ? primary : ctx.caster; |
||||
const center = logicPosOf(session, lockId) ?? logicPosOf(session, ctx.caster); |
||||
if (!center) { |
||||
console.log('[IceBall] 无落点', ctx.params.skillId); |
||||
return; |
||||
} |
||||
const placed = this._placeBall(lockId, center); |
||||
if (!placed) return; |
||||
this._runs.push({ |
||||
caster: ctx.caster, |
||||
ctx: buildShadowDealContext(ctx, String(ctx.params.buff1 ?? ''), String(ctx.params.buff2 ?? '')), |
||||
x: center.x, |
||||
y: center.y, |
||||
radius, |
||||
scale: wan / 10000, |
||||
explodeWait: placed.explodeAt, |
||||
endWait: Math.max(0.05, placed.duration - placed.explodeAt), |
||||
exploded: false, |
||||
node: placed.node, |
||||
}); |
||||
} |
||||
|
||||
/** |
||||
* 推进爆炸与回池。 |
||||
* @param dt 逻辑秒 |
||||
*/ |
||||
tick(dt: number): void { |
||||
if (!(dt > 0) || this._runs.length <= 0) return; |
||||
const session = SkillPresentationEnv.getBattleSession(); |
||||
for (let i = this._runs.length - 1; i >= 0; i--) { |
||||
const run = this._runs[i]; |
||||
if (!session || !session.world.isAlive(run.caster) || !run.ctx.isAlive) { |
||||
this._drop(run); |
||||
this._runs.splice(i, 1); |
||||
continue; |
||||
} |
||||
if (!run.exploded) { |
||||
run.explodeWait -= dt; |
||||
if (run.explodeWait <= 0) { |
||||
this._explode(session, run); |
||||
run.exploded = true; |
||||
} |
||||
continue; |
||||
} |
||||
run.endWait -= dt; |
||||
if (run.endWait <= 0) { |
||||
this._drop(run); |
||||
this._runs.splice(i, 1); |
||||
} |
||||
} |
||||
} |
||||
|
||||
/** 战斗结束清空 */ |
||||
abortAll(): void { |
||||
for (let i = 0; i < this._runs.length; i++) this._drop(this._runs[i]); |
||||
this._runs.length = 0; |
||||
} |
||||
|
||||
private _explode(session: NonNullable<ReturnType<typeof SkillPresentationEnv.getBattleSession>>, run: IceBallRun): void { |
||||
this._activePulse = run; |
||||
pulseHostileCircle(session, run.caster, run.x, run.y, run.radius, this._onPulseHit); |
||||
this._activePulse = null; |
||||
} |
||||
|
||||
private readonly _onPulseHit = (id: EntityId): void => { |
||||
const run = this._activePulse; |
||||
if (!run) return; |
||||
run.ctx.dealDamage(id, { scale: run.scale, damageType: ICE_BALL_DMG }); |
||||
}; |
||||
|
||||
/** |
||||
* 在目标落点生成冰球并播默认动画。 |
||||
* @param lockId 锁定目标 |
||||
* @param center 逻辑圆心 |
||||
*/ |
||||
private _placeBall(lockId: EntityId, center: { x: number; y: number }): { node: Node; explodeAt: number; duration: number } | null { |
||||
const flyLayer = SkillPresentationEnv.flyLayer; |
||||
if (!flyLayer?.isValid) { |
||||
console.log('[IceBall] 无飞行层'); |
||||
return null; |
||||
} |
||||
let node: Node | null = null; |
||||
try { |
||||
node = gg.res.getNode(GPath.HeroSkillPrefab(), ICE_BALL_PREFAB, GBundle.BattleHero); |
||||
} catch (e) { |
||||
console.log('[IceBall] 预制体加载异常', String(e)); |
||||
return null; |
||||
} |
||||
if (!node?.isValid) { |
||||
console.log('[IceBall] 预制体未加载', ICE_BALL_PREFAB); |
||||
return null; |
||||
} |
||||
const ut = flyLayer.getComponent(UITransform); |
||||
if (!ut) { |
||||
gg.res.putNode(node); |
||||
return null; |
||||
} |
||||
const world = this._resolvePlaceWorld(lockId, center); |
||||
if (!world) { |
||||
console.log('[IceBall] 无放置世界坐标', lockId); |
||||
gg.res.putNode(node); |
||||
return null; |
||||
} |
||||
flyLayer.active = true; |
||||
node.parent = flyLayer; |
||||
node.active = true; |
||||
node.layer = flyLayer.layer; |
||||
node.setScale(1, 1, 1); |
||||
node.setPosition(ut.convertToNodeSpaceAR(world)); |
||||
node.setSiblingIndex(flyLayer.children.length - 1); |
||||
|
||||
const sk = node.getComponentInChildren(sp.Skeleton); |
||||
if (!sk?.isValid) { |
||||
console.log('[IceBall] 缺 Spine', ICE_BALL_PREFAB); |
||||
gg.res.putNode(node); |
||||
return null; |
||||
} |
||||
const typed = sk as sp.Skeleton & { defaultAnimation?: string }; |
||||
const anim = String(typed.defaultAnimation || ICE_BALL_ANIM).trim() || ICE_BALL_ANIM; |
||||
if (!BattleSpinePlayback.play(sk, anim, { loop: false })) { |
||||
console.log('[IceBall] 动画起播失败', anim); |
||||
gg.res.putNode(node); |
||||
return null; |
||||
} |
||||
const durationRaw = BattleSpinePlayback.getAnimDuration(sk, anim); |
||||
const duration = durationRaw != null && durationRaw > 0 ? durationRaw : ICE_BALL_DURATION_FALLBACK; |
||||
const explodeRaw = BattleSpinePlayback.findFirstAttachmentClearTime(sk, anim, '冰球'); |
||||
let explodeAt = explodeRaw != null && explodeRaw > 0 ? explodeRaw : ICE_BALL_EXPLODE_FALLBACK; |
||||
if (explodeAt >= duration) explodeAt = Math.max(0.05, duration * 0.85); |
||||
return { node, explodeAt, duration }; |
||||
} |
||||
|
||||
/** |
||||
* 放置世界坐标:优先怪节点,否则逻辑坐标映射。 |
||||
* @param lockId 锁定目标 |
||||
* @param center 逻辑圆心 |
||||
*/ |
||||
private _resolvePlaceWorld(lockId: EntityId, center: { x: number; y: number }): Vec3 | null { |
||||
const fromMonster = SkillPresentationEnv.getTargetWorldPos(lockId); |
||||
if (fromMonster) return fromMonster; |
||||
const session = SkillPresentationEnv.getBattleSession(); |
||||
const map = SkillPresentationEnv.getMap(); |
||||
if (!session || !map) return null; |
||||
const tf = session.world.getComponent(lockId, TransformComp); |
||||
if (!tf) return null; |
||||
return logicalWorldToCocos(session, map, tf.row, tf.col, center.x, center.y); |
||||
} |
||||
|
||||
private _drop(run: IceBallRun): void { |
||||
const node = run.node; |
||||
run.node = null; |
||||
if (!node?.isValid) return; |
||||
const skins = node.getComponentsInChildren(sp.Skeleton); |
||||
for (let i = 0; i < skins.length; i++) { |
||||
BattleSpinePlayback.clearPendingComplete(skins[i]); |
||||
BattleSpinePlayback.resetTracks(skins[i]); |
||||
} |
||||
if (node['resKey']) gg.res.putNode(node); |
||||
else if (isValid(node)) node.destroy(); |
||||
const flyLayer = SkillPresentationEnv.flyLayer; |
||||
if (flyLayer?.isValid && flyLayer.children.length === 0) flyLayer.active = false; |
||||
} |
||||
} |
||||
@ -0,0 +1,9 @@ |
||||
{ |
||||
"ver": "4.0.24", |
||||
"importer": "typescript", |
||||
"imported": true, |
||||
"uuid": "3380c6f6-3d3d-4da3-bfcf-e7273d59bee3", |
||||
"files": [], |
||||
"subMetas": {}, |
||||
"userData": {} |
||||
} |
||||
Loading…
Reference in new issue