10 Commits

Author SHA1 Message Date
panFD
50f43c227a refactor(mission): 优化战斗关卡UI显示与逻辑
1.  调整MissionComp注释与战斗计时获取逻辑
2.  移除关卡波数显示中的总波数限制,只显示当前波数
3.  更新mission.prefab的UI布局与默认显示文本
4.  调整地图prefab的物体位置
5.  修改bg2动画的帧率与时长参数
2026-06-13 22:42:09 +08:00
panFD
9c2c0a1621 feat(map): add hero move animation component
新增了英雄移动组件,实现多个英雄的周期性往复移动和动画速度同步匹配
同时更新了预制件配置以适配新的组件和节点命名调整
2026-06-13 22:12:27 +08:00
panFD
b12270be66 fix(map): 强制开启信息弹窗的关闭按钮
移除技能卡预览模式下关闭按钮的条件显示逻辑,始终显示关闭节点
2026-06-13 17:57:10 +08:00
panFD
d926c08582 feat(ui): 为所有按钮添加全局点击音效
1. 重构按钮点击音效添加方式,通过重写Button原型的_onTouchEnded方法实现全局注入
2. 移除各业务组件中手动添加的按钮音效播放代码,统一音效播放逻辑
2026-06-13 16:56:41 +08:00
panFD
10ab03b871 feat(audio): add new audio assets and replace old wav files
1. add new mp3 format audio files and their meta configuration files
2. delete old unused wav format audio files and their meta files
3. add flash effect audio playback logic in skill casting system
2026-06-13 16:35:56 +08:00
panFD
7dd5257fd8 修复(地图任务组件): 调整战斗和主页场景的背景音乐音量
为战斗场景设置背景音乐音量为0.5,为主页场景恢复默认音量1.0,同时更新对应注释说明。
2026-06-13 11:23:30 +08:00
panFD
b0d752ab18 feat(游戏): 新增背景音乐资源,添加播放逻辑并优化教程UI
新增主页与战斗场景的背景音乐文件及对应的导入配置
在主页和战斗任务组件中添加循环播放背景音乐的逻辑
调整四个新手教程引导预制体的文字、字体、描边与布局参数
2026-06-13 11:23:00 +08:00
panFD
4460c1aaf2 feat(音频): 添加音频资源、音效开关与战斗音效播放逻辑
- 新增Hit、Critical、Attack_01/02、dun等音频资源及元文件
- 新增音效与背景音乐开关配置,包含状态同步与更新方法
- 在英雄受击时根据暴击状态播放对应音效
2026-06-13 09:37:23 +08:00
panFD
092d0e4371 feat(hero&skill): 新增击晕控制相关技能与属性支持
1. 新增击晕率属性计算与驻场加成逻辑
2. 重构冰冻相关英雄为击晕控制英雄
3. 完善技能描述显示与配置参数
4. 更新UI预制体 sprite 配置(仅为资源变更)
2026-06-12 22:12:35 +08:00
panFD
8fca560efd chore(skill assets): clean up unused skill related prefab and animation files
本次提交清理了大量未使用的技能相关预制件和动画资源文件,包括多个失效的prefab、anim及其meta元文件,同时优化了dead.prefab和yellow.anim的配置参数,移除冗余无用的资源代码。
2026-06-12 22:00:28 +08:00
55 changed files with 520 additions and 1281 deletions

View File

@@ -12074,7 +12074,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 459.147,
"x": 371.47,
"y": -29.439,
"z": 0
},
@@ -21924,7 +21924,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 459.147,
"x": 371.47,
"y": -29.439,
"z": 0
},

View File

@@ -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
}
]

View File

@@ -1,13 +0,0 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "f6fa875d-2465-4e3b-8f4d-52d2ee43481d",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "dead"
}
}

View File

@@ -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
}
]

View File

@@ -1,13 +0,0 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "9b809af9-120e-4683-a90a-5fecbd4e1ebd",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "start"
}
}

View File

@@ -1,130 +0,0 @@
[
{
"__type__": "cc.AnimationClip",
"_name": "buff_wind",
"_objFlags": 0,
"__editorExtras__": {
"embeddedPlayerGroups": []
},
"_native": "",
"sample": 18,
"speed": 1,
"wrapMode": 1,
"enableTrsBlending": false,
"_duration": 0.5555555555555556,
"_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": "skill"
},
{
"__type__": "cc.animation.ComponentPath",
"component": "cc.Sprite"
},
{
"__type__": "cc.animation.Channel",
"_curve": {
"__id__": 6
}
},
{
"__type__": "cc.ObjectCurve",
"_times": [
0,
0.05555555555555555,
0.1111111111111111,
0.16666666666666666,
0.2222222222222222,
0.2777777777777778,
0.3333333333333333,
0.3888888888888889,
0.4444444444444444,
0.5
],
"_values": [
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@32458",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@770ee",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bad49",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c9790",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@32458",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@770ee",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@bad49",
"__expectedType__": "cc.SpriteFrame"
},
{
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@c9790",
"__expectedType__": "cc.SpriteFrame"
}
]
},
{
"__type__": "cc.AnimationClipAdditiveSettings",
"enabled": false,
"refClip": null
}
]

View File

@@ -1,13 +0,0 @@
{
"ver": "2.0.3",
"importer": "animation-clip",
"imported": true,
"uuid": "67419693-8fea-48df-a2f4-d52e993932c0",
"files": [
".cconb"
],
"subMetas": {},
"userData": {
"name": "buff_wind"
}
}

View File

@@ -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": [
{

View File

@@ -1,274 +0,0 @@
[
{
"__type__": "cc.Prefab",
"_name": "buff_wind",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
"data": {
"__id__": 1
},
"optimizationPolicy": 0,
"persistent": false
},
{
"__type__": "cc.Node",
"_name": "buff_wind",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
"_children": [
{
"__id__": 2
}
],
"_active": true,
"_components": [
{
"__id__": 8
},
{
"__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": 1,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.Node",
"_name": "skill",
"_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.5,
"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": 145,
"height": 105
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "b4sNQPJWFKha7x75SWXmRj"
},
{
"__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": 206
},
"_spriteFrame": {
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6@121c9",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 1,
"_fillType": 1,
"_sizeMode": 1,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0.2,
"_fillRange": 1,
"_isTrimmedMode": true,
"_useGrayscale": false,
"_atlas": {
"__uuid__": "3d46f945-3f07-477e-a95a-b49557d552c6",
"__expectedType__": "cc.SpriteAtlas"
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "9a+65VIghBm4HQxuHPQ/mg"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "7a5LvbdlxEc6FKa7cun2oB",
"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": 80,
"height": 110
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "63NP9yq3hEUKD/OZZZ5t7x"
},
{
"__type__": "cc.Animation",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 1
},
"_enabled": true,
"__prefab": {
"__id__": 11
},
"playOnLoad": true,
"_clips": [
{
"__uuid__": "67419693-8fea-48df-a2f4-d52e993932c0",
"__expectedType__": "cc.AnimationClip"
}
],
"_defaultClip": {
"__uuid__": "67419693-8fea-48df-a2f4-d52e993932c0",
"__expectedType__": "cc.AnimationClip"
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "c6LOemuvJKyYCqlF/yUJcr"
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__id__": 0
},
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
"instance": null,
"targetOverrides": null
}
]

View File

@@ -1,13 +0,0 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "311c4048-f871-4f0d-a1e6-c1d82aba4a42",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "buff_wind"
}
}

View File

@@ -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
}

View File

@@ -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"}}

View File

@@ -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
}
]

View File

@@ -1,13 +0,0 @@
{
"ver": "1.1.50",
"importer": "prefab",
"imported": true,
"uuid": "91d53413-e69c-48fd-8553-d01cbc341f4a",
"files": [
".json"
],
"subMetas": {},
"userData": {
"syncNodeName": "start"
}
}

View File

@@ -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,

View File

@@ -710,10 +710,10 @@
"_string": "点击开始游戏",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 36,
"_fontSize": 35,
"_actualFontSize": 51,
"_fontSize": 50,
"_fontFamily": "Arial",
"_lineHeight": 40,
"_lineHeight": 50,
"_overflow": 2,
"_enableWrapText": true,
"_font": null,
@@ -732,7 +732,7 @@
"b": 0,
"a": 255
},
"_outlineWidth": 2,
"_outlineWidth": 4,
"_enableShadow": false,
"_shadowColor": {
"__type__": "cc.Color",

View File

@@ -406,7 +406,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 279.527,
"y": 418.633,
"z": 0
},
"_lrot": {
@@ -707,13 +707,13 @@
"b": 255,
"a": 255
},
"_string": "点击开始游戏",
"_string": "选择一个战斗技能",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 36,
"_fontSize": 35,
"_actualFontSize": 46,
"_fontSize": 45,
"_fontFamily": "Arial",
"_lineHeight": 40,
"_lineHeight": 50,
"_overflow": 2,
"_enableWrapText": true,
"_font": null,
@@ -732,7 +732,7 @@
"b": 0,
"a": 255
},
"_outlineWidth": 2,
"_outlineWidth": 3,
"_enableShadow": false,
"_shadowColor": {
"__type__": "cc.Color",
@@ -762,8 +762,6 @@
"__id__": 0
},
"fileId": "25KvUjWTBKZq5B20vwtseT",
"instance": null,
"targetOverrides": null,
"nestedPrefabInstanceRoots": null
},
{
@@ -1178,14 +1176,14 @@
"__prefab": {
"__id__": 49
},
"_alignFlags": 40,
"_alignFlags": 42,
"_target": null,
"_left": 0,
"_right": 0,
"_top": 590,
"_bottom": 590,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_verticalCenter": 418.633,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,

View File

@@ -402,7 +402,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"y": 248.35000000000002,
"z": 0
},
"_lrot": {
@@ -703,13 +703,13 @@
"b": 255,
"a": 255
},
"_string": "点击开始游戏",
"_string": "选中卡牌向上滑动,召唤英雄",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 36,
"_fontSize": 35,
"_actualFontSize": 41,
"_fontSize": 40,
"_fontFamily": "Arial",
"_lineHeight": 40,
"_lineHeight": 50,
"_overflow": 2,
"_enableWrapText": true,
"_font": null,
@@ -728,7 +728,7 @@
"b": 0,
"a": 255
},
"_outlineWidth": 2,
"_outlineWidth": 4,
"_enableShadow": false,
"_shadowColor": {
"__type__": "cc.Color",
@@ -1174,12 +1174,12 @@
"__prefab": {
"__id__": 49
},
"_alignFlags": 40,
"_alignFlags": 44,
"_target": null,
"_left": 0,
"_right": 0,
"_top": 590,
"_bottom": 590,
"_bottom": 788.35,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -1303,7 +1303,6 @@
"__id__": 0
},
"fileId": "6dh4o/8p1Cy5An1p6o4Bc3",
"instance": null,
"targetOverrides": null
"instance": null
}
]

View File

@@ -335,12 +335,12 @@
"__prefab": {
"__id__": 14
},
"_alignFlags": 0,
"_alignFlags": 36,
"_target": null,
"_left": 0,
"_right": 0,
"_left": 651.948,
"_right": 67.05200000000002,
"_top": 0,
"_bottom": 0,
"_bottom": 50.20600000000002,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
@@ -349,7 +349,7 @@
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalWidth": 1,
"_originalHeight": 0,
"_alignMode": 2,
"_lockFlags": 0,
@@ -707,13 +707,13 @@
"b": 255,
"a": 255
},
"_string": "点击开始游戏",
"_string": "点击「战斗」进入战斗阶段",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 36,
"_fontSize": 35,
"_actualFontSize": 41,
"_fontSize": 40,
"_fontFamily": "Arial",
"_lineHeight": 40,
"_lineHeight": 50,
"_overflow": 2,
"_enableWrapText": true,
"_font": null,
@@ -732,7 +732,7 @@
"b": 0,
"a": 255
},
"_outlineWidth": 2,
"_outlineWidth": 4,
"_enableShadow": false,
"_shadowColor": {
"__type__": "cc.Color",

View File

@@ -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": {

View File

@@ -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": ""
},
{

View File

@@ -180,7 +180,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"x": -259.716,
"y": 0,
"z": 0
},
@@ -271,7 +271,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 510,
"width": 300,
"height": 66
},
"_anchorPoint": {
@@ -313,7 +313,7 @@
},
"_type": 1,
"_fillType": 0,
"_sizeMode": 1,
"_sizeMode": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
@@ -443,7 +443,7 @@
"b": 255,
"a": 255
},
"_string": "第 1/20 波",
"_string": "第 1 波",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 26,
@@ -821,8 +821,8 @@
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": -36.584,
"x": 295.012,
"y": 0,
"z": 0
},
"_lrot": {
@@ -1110,8 +1110,8 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 100,
"height": 100
"width": 720,
"height": 50
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@@ -1136,11 +1136,11 @@
"__prefab": {
"__id__": 44
},
"_alignFlags": 17,
"_alignFlags": 41,
"_target": null,
"_left": 0,
"_right": 0,
"_top": 39.067999999999984,
"_top": 64.06799999999998,
"_bottom": 0,
"_horizontalCenter": 0,
"_verticalCenter": 0,
@@ -1150,7 +1150,7 @@
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalWidth": 100,
"_originalHeight": 0,
"_alignMode": 2,
"_lockFlags": 0,
@@ -14302,7 +14302,7 @@
"_lpos": {
"__type__": "cc.Vec3",
"x": 761.798,
"y": 640,
"y": 1020,
"z": 0
},
"_lrot": {
@@ -14903,11 +14903,11 @@
"__prefab": {
"__id__": 701
},
"_alignFlags": 2,
"_alignFlags": 1,
"_target": null,
"_left": 0,
"_right": 0,
"_top": 448.34799999999996,
"_top": 200,
"_bottom": 0,
"_horizontalCenter": 0,
"_verticalCenter": 0,
@@ -15377,7 +15377,7 @@
"propertyPath": [
"_active"
],
"value": true
"value": false
},
{
"__type__": "CCPropertyOverrideInfo",

View File

@@ -0,0 +1,9 @@
{
"ver": "1.2.0",
"importer": "directory",
"imported": true,
"uuid": "dedd7eec-c366-427a-a253-1cd907c8dc69",
"files": [],
"subMetas": {},
"userData": {}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

Binary file not shown.

View 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
}
}

View File

@@ -16,6 +16,8 @@ import { FightSet } from "./config/GameSet";
*/
export interface GameDate {
gold: number,
switch_effect?: boolean, // 音效开关
switch_music?: boolean, // 音乐开关
timestamp?: number, // 用于比对本地与云端数据的最新状态
}
export interface CloudData {
@@ -129,6 +131,8 @@ export class SingletonModuleComp extends ecs.Comp {
} as GameScoreStats,
gold: 0, // 金币数据MVVM绑定字段
switch_effect: true, // 音效开关MVVM绑定字段
switch_music: true, // 音乐开关MVVM绑定字段
};
@@ -219,6 +223,16 @@ export class SingletonModuleComp extends ecs.Comp {
if (data.gold !== undefined) {
this.vmdata.gold = data.gold;
}
// 同步音效开关
if (data.switch_effect !== undefined) {
this.vmdata.switch_effect = data.switch_effect;
if (oops.audio) oops.audio.switchEffect = data.switch_effect;
}
// 同步音乐开关
if (data.switch_music !== undefined) {
this.vmdata.switch_music = data.switch_music;
if (oops.audio) oops.audio.switchMusic = data.switch_music;
}
}
// 触发UI更新
@@ -231,6 +245,8 @@ export class SingletonModuleComp extends ecs.Comp {
getGameDate() {
let data: GameDate = {
gold: this.vmdata.gold,
switch_effect: this.vmdata.switch_effect,
switch_music: this.vmdata.switch_music,
timestamp: Date.now() // 每次获取当前数据结构时都附带最新的时间戳
};
return data;
@@ -245,6 +261,22 @@ export class SingletonModuleComp extends ecs.Comp {
return true
}
updateSwitchEffect(isOpen: boolean, is_sync: boolean = true) {
this.vmdata.switch_effect = isOpen;
if (oops.audio) oops.audio.switchEffect = isOpen;
if (is_sync) {
gameDataSync.markDataDirty();
}
}
updateSwitchMusic(isOpen: boolean, is_sync: boolean = true) {
this.vmdata.switch_music = isOpen;
if (oops.audio) oops.audio.switchMusic = isOpen;
if (is_sync) {
gameDataSync.markDataDirty();
}
}
/**
* 在游戏载入早期调用,预加载常用图集
*/

View File

@@ -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));

View File

@@ -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,7 +186,7 @@ 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 }
}
/******
@@ -249,7 +252,7 @@ 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: {
@@ -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: "召唤墙阻挡敌人,有概率冰冻",
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,9 +325,9 @@ 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",
@@ -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%" },

View File

@@ -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次攻击触发冰刺AOE25%冰冻概率住一排敌人"},
atking:[{s_uuid:6105,t_num:2,overrides:{ap:120,stun:25}}],
info:"驻场击晕光环每2次攻击触发雷爆AOE25%击晕概率住一排敌人"},
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) ==========

View File

@@ -273,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);
}
/** 英雄实时风怒概率 = 基础风怒 + 驻场风怒。 */

View File

@@ -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;
@@ -523,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";

View File

@@ -229,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;
@@ -483,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;

View File

@@ -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);
// 加载多语言包

View File

@@ -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();
}

View 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));
});
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "46ae5df5-c745-4689-bef6-f2300a78d15e",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -643,6 +643,7 @@ export class MissionCardComp extends CCComp {
}
/** 抽卡按钮释放 → 执行抽卡逻辑 */
private onDrawTouchEnd() {
oops.audio.playEffect("music/button");
this.playButtonClickAnim(this.cards_chou, () => this.onClickDraw());
}
/** 抽卡按钮取消 → 恢复缩放 */
@@ -655,6 +656,7 @@ export class MissionCardComp extends CCComp {
this.playButtonPressAnim(this.skill_refresh);
}
private onSkillDrawTouchEnd() {
oops.audio.playEffect("music/button");
this.playButtonClickAnim(this.skill_refresh, () => this.onClickSkillRefresh());
}
private onSkillDrawTouchCancel() {
@@ -665,6 +667,7 @@ export class MissionCardComp extends CCComp {
this.playButtonPressAnim(this.skill_ad_refresh);
}
private onSkillAdDrawTouchEnd() {
oops.audio.playEffect("music/button");
this.playButtonClickAnim(this.skill_ad_refresh, () => this.onClickSkillAdRefresh());
}
private onSkillAdDrawTouchCancel() {

View File

@@ -117,7 +117,7 @@ export class MissionComp extends CCComp {
// ======================== 运行时状态 ========================
/** 战斗已耗时(秒),正向计时 */
/** 本波战斗已耗时(秒),正向计时,用于自适应难度评估 */
clearTime: number = 0
/** 剩余复活次数 */
revive_times: number = 1;
@@ -242,7 +242,7 @@ export class MissionComp extends CCComp {
/** 更新时间/波数显示(仅在秒数变化时更新以减少 Label 操作) */
update_time() {
const remainSecond = Math.floor(this.clearTime);
const remainSecond = Math.floor(smc.vmdata.mission_data.fight_time);
if (remainSecond === this.lastTimeSecond) return;
this.lastTimeSecond = remainSecond;
let m = Math.floor(remainSecond / 60);
@@ -307,6 +307,10 @@ export class MissionComp extends CCComp {
loading.active = false
}, 0.5)
}
// 播放战斗背景音乐,并稍微降低音量
oops.audio.volumeMusic = 0.5;
oops.audio.playerMusicLoop("music/BATTLE");
}
/** 更新开始按钮的状态显示 */
@@ -396,7 +400,7 @@ export class MissionComp extends CCComp {
const label = phaseNode.getComponent(Label);
if (label) {
const wave = Math.max(1, this.currentWave || (smc.vmdata && smc.vmdata.mission_data ? smc.vmdata.mission_data.level : 1) || 1);
label.string = `${wave}/15`;
label.string = `${wave}`;
}
// 阶段切换动感表现:只在进入战斗阶段跳动一下,让流程充满心流体验
@@ -636,6 +640,8 @@ export class MissionComp extends CCComp {
if (!smc.mission.play) return;
if (smc.mission.pause) return;
if (this.currentPhase !== MissionPhase.Prepare) return;
oops.audio.playEffect("music/button");
this.to_fight();
}

View File

@@ -156,6 +156,9 @@ export class MissionHomeComp extends CCComp {
this.uodate_data()
this.hideAllPages()
this.node.active=true
// 播放主页背景音乐,恢复默认音量
oops.audio.volumeMusic = 1.0;
oops.audio.playerMusicLoop("music/home")
}
/** 更新主页显示数据(预留) */

View File

@@ -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;

View File

@@ -206,13 +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.stun_chance || 0;
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(); // 初始化携带施法者的穿透概率