Compare commits
34 Commits
a468c6c774
...
oh/0_7_251
| Author | SHA1 | Date | |
|---|---|---|---|
| 03a8a41980 | |||
| 91c18004eb | |||
| 6df4abadd1 | |||
| 8d2ec76b01 | |||
| 4ed531e100 | |||
| aefe3d6d06 | |||
| 2dc43b5b81 | |||
| 58fa6527ee | |||
| df23e3787d | |||
| 8a0cfb78dd | |||
| 3990799046 | |||
| 1c49649c00 | |||
| 51f32b1d29 | |||
| b4fd807ddc | |||
| ff4ce76482 | |||
| 8113ec671f | |||
| 5a81704379 | |||
| f2ec48bd2b | |||
| 94d5aa8920 | |||
| bcaa377cf6 | |||
| e577ed976c | |||
| 209d550e87 | |||
| 5935b20094 | |||
| 78ac2e949f | |||
| 9f809b1ffa | |||
| e42bdbb671 | |||
| 9798930879 | |||
| 7b067213c0 | |||
| ab8bb01dee | |||
| deb224b067 | |||
| 078787ccf2 | |||
| 3daddd6935 | |||
| 46a779633a | |||
| 4af9a6fd9e |
BIN
assets/resources/game/05-outline-glow/.DS_Store
vendored
BIN
assets/resources/game/05-outline-glow/.DS_Store
vendored
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"ver":"1.2.0","importer":"directory","imported":true,"uuid":"551a2611-69c0-45ae-bfc6-37f056a34b33","files":[],"subMetas":{},"userData":{}}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"__type__": "cc.Material",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"_native": "",
|
||||
"_effectAsset": {
|
||||
"__uuid__": "cfeeea4f-db9c-42cd-a0f7-fc5cb37bd3d7",
|
||||
"__expectedType__": "cc.EffectAsset"
|
||||
},
|
||||
"_techIdx": 0,
|
||||
"_defines": [
|
||||
{
|
||||
"USE_TEXTURE": true
|
||||
}
|
||||
],
|
||||
"_states": [
|
||||
{
|
||||
"rasterizerState": {},
|
||||
"depthStencilState": {},
|
||||
"blendState": {
|
||||
"targets": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"_props": [
|
||||
{
|
||||
"glowColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 0,
|
||||
"g": 0,
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"glowWidth": 0.003,
|
||||
"glowThreshold": 0.645
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"ver":"1.0.21","importer":"material","imported":true,"uuid":"2fcd55a9-38ca-45aa-9164-68e48aaf51ce","files":[".json"],"subMetas":{},"userData":{}}
|
||||
@@ -1 +0,0 @@
|
||||
{"ver":"1.0.21","importer":"material","imported":true,"uuid":"974af3c9-d7ee-449f-a5df-cd8e2dd49188","files":[".json"],"subMetas":{},"userData":{}}
|
||||
@@ -1 +0,0 @@
|
||||
{"ver":"1.2.0","importer":"directory","imported":true,"uuid":"7d369c63-9191-4323-abcc-edda5799a410","files":[],"subMetas":{},"userData":{}}
|
||||
@@ -1,169 +0,0 @@
|
||||
// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
|
||||
CCEffect %{
|
||||
techniques:
|
||||
- passes:
|
||||
- vert: sprite-vs:vert
|
||||
frag: sprite-fs:frag
|
||||
depthStencilState:
|
||||
depthTest: false
|
||||
depthWrite: false
|
||||
blendState:
|
||||
targets:
|
||||
- blend: true
|
||||
blendSrc: src_alpha
|
||||
blendDst: one_minus_src_alpha
|
||||
blendDstAlpha: one_minus_src_alpha
|
||||
rasterizerState:
|
||||
cullMode: none
|
||||
properties:
|
||||
alphaThreshold: { value: 0.5 }
|
||||
|
||||
glowColor: { value: [1, 1, 1, 1], editor: { type: color } }
|
||||
glowWidth: { value: 0.05, editor: { slide: true, range: [0, 0.3], step: 0.001 } }
|
||||
glowThreshold: { value: 1, editor: { slide: true, range: [0, 1], step: 0.001 } }
|
||||
}%
|
||||
|
||||
CCProgram sprite-vs %{
|
||||
precision highp float;
|
||||
#include <builtin/uniforms/cc-global>
|
||||
#if USE_LOCAL
|
||||
#include <builtin/uniforms/cc-local>
|
||||
#endif
|
||||
#if SAMPLE_FROM_RT
|
||||
#include <common/common-define>
|
||||
#endif
|
||||
in vec3 a_position;
|
||||
in vec2 a_texCoord;
|
||||
in vec4 a_color;
|
||||
|
||||
out vec4 color;
|
||||
out vec2 uv0;
|
||||
|
||||
vec4 vert () {
|
||||
vec4 pos = vec4(a_position, 1);
|
||||
|
||||
#if USE_LOCAL
|
||||
pos = cc_matWorld * pos;
|
||||
#endif
|
||||
|
||||
#if USE_PIXEL_ALIGNMENT
|
||||
pos = cc_matView * pos;
|
||||
pos.xyz = floor(pos.xyz);
|
||||
pos = cc_matProj * pos;
|
||||
#else
|
||||
pos = cc_matViewProj * pos;
|
||||
#endif
|
||||
|
||||
uv0 = a_texCoord;
|
||||
#if SAMPLE_FROM_RT
|
||||
CC_HANDLE_RT_SAMPLE_FLIP(uv0);
|
||||
#endif
|
||||
color = a_color;
|
||||
|
||||
return pos;
|
||||
}
|
||||
}%
|
||||
|
||||
CCProgram sprite-fs %{
|
||||
precision highp float;
|
||||
#include <builtin/internal/embedded-alpha>
|
||||
#include <builtin/internal/alpha-test>
|
||||
|
||||
in vec4 color;
|
||||
|
||||
uniform FSConstants {
|
||||
vec4 glowColor;
|
||||
float glowWidth;
|
||||
float glowThreshold;
|
||||
};
|
||||
|
||||
#if USE_TEXTURE
|
||||
in vec2 uv0;
|
||||
#pragma builtin(local)
|
||||
layout(set = 2, binding = 12) uniform sampler2D cc_spriteTexture;
|
||||
#endif
|
||||
|
||||
vec4 getTextureColor (sampler2D mainTexture, vec2 uv) {
|
||||
if (uv.x > 1.0 || uv.x < 0.0 || uv.y > 1.0 || uv.y < 0.0) {
|
||||
return vec4(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
return texture(mainTexture, uv);
|
||||
}
|
||||
|
||||
float getColorAlpha (float angle, float dist) {
|
||||
// 角度转弧度,公式为:弧度 = 角度 * (pi / 180)
|
||||
float radian = angle * 3.14 / 180.0;
|
||||
vec2 newUV = uv0 + vec2(dist * cos(radian), dist * sin(radian));
|
||||
vec4 color = getTextureColor(cc_spriteTexture, newUV);
|
||||
return color.a;
|
||||
}
|
||||
|
||||
float getAverageAlpha (float dist) {
|
||||
float totalAlpha = 0.0;
|
||||
|
||||
totalAlpha += getColorAlpha(0.0, dist);
|
||||
totalAlpha += getColorAlpha(30.0, dist);
|
||||
totalAlpha += getColorAlpha(60.0, dist);
|
||||
totalAlpha += getColorAlpha(90.0, dist);
|
||||
totalAlpha += getColorAlpha(120.0, dist);
|
||||
totalAlpha += getColorAlpha(150.0, dist);
|
||||
totalAlpha += getColorAlpha(180.0, dist);
|
||||
totalAlpha += getColorAlpha(210.0, dist);
|
||||
totalAlpha += getColorAlpha(240.0, dist);
|
||||
totalAlpha += getColorAlpha(270.0, dist);
|
||||
totalAlpha += getColorAlpha(300.0, dist);
|
||||
totalAlpha += getColorAlpha(330.0, dist);
|
||||
|
||||
return totalAlpha * 0.0833;
|
||||
}
|
||||
|
||||
float getGlowAlpha () {
|
||||
if (glowWidth == 0.0 ) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float totalAlpha = 0.0;
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.1);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.2);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.3);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.4);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.5);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.6);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.7);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.8);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.9);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 1.0);
|
||||
|
||||
return totalAlpha * 0.1;
|
||||
}
|
||||
|
||||
vec4 frag () {
|
||||
vec4 o = vec4(1, 1, 1, 1);
|
||||
|
||||
#if USE_TEXTURE
|
||||
o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);
|
||||
#if IS_GRAY
|
||||
float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b;
|
||||
o.r = o.g = o.b = gray;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
float alpha = getGlowAlpha();
|
||||
|
||||
if (alpha <= glowThreshold) {
|
||||
alpha /= glowThreshold;
|
||||
alpha = -1.0 * (alpha - 1.0) * (alpha - 1.0) * (alpha - 1.0) * (alpha - 1.0) + 1.0;
|
||||
} else {
|
||||
alpha = 0.0;
|
||||
}
|
||||
|
||||
vec4 dstColor = glowColor * alpha;
|
||||
vec4 scrColor = o;
|
||||
|
||||
o = scrColor * scrColor.a + dstColor * (1.0 - scrColor.a);
|
||||
|
||||
o *= color;
|
||||
ALPHA_TEST(o);
|
||||
return o;
|
||||
}
|
||||
}%
|
||||
@@ -1,169 +0,0 @@
|
||||
// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
|
||||
CCEffect %{
|
||||
techniques:
|
||||
- passes:
|
||||
- vert: sprite-vs:vert
|
||||
frag: sprite-fs:frag
|
||||
depthStencilState:
|
||||
depthTest: false
|
||||
depthWrite: false
|
||||
blendState:
|
||||
targets:
|
||||
- blend: true
|
||||
blendSrc: src_alpha
|
||||
blendDst: one_minus_src_alpha
|
||||
blendDstAlpha: one_minus_src_alpha
|
||||
rasterizerState:
|
||||
cullMode: none
|
||||
properties:
|
||||
alphaThreshold: { value: 0.5 }
|
||||
|
||||
glowColor: { value: [1, 1, 1, 1], editor: { type: color } }
|
||||
glowWidth: { value: 0.05, editor: { slide: true, range: [0, 0.3], step: 0.001 } }
|
||||
glowThreshold: { value: 1, editor: { slide: true, range: [0, 1], step: 0.001 } }
|
||||
}%
|
||||
|
||||
CCProgram sprite-vs %{
|
||||
precision highp float;
|
||||
#include <builtin/uniforms/cc-global>
|
||||
#if USE_LOCAL
|
||||
#include <builtin/uniforms/cc-local>
|
||||
#endif
|
||||
#if SAMPLE_FROM_RT
|
||||
#include <common/common-define>
|
||||
#endif
|
||||
in vec3 a_position;
|
||||
in vec2 a_texCoord;
|
||||
in vec4 a_color;
|
||||
|
||||
out vec4 color;
|
||||
out vec2 uv0;
|
||||
|
||||
vec4 vert () {
|
||||
vec4 pos = vec4(a_position, 1);
|
||||
|
||||
#if USE_LOCAL
|
||||
pos = cc_matWorld * pos;
|
||||
#endif
|
||||
|
||||
#if USE_PIXEL_ALIGNMENT
|
||||
pos = cc_matView * pos;
|
||||
pos.xyz = floor(pos.xyz);
|
||||
pos = cc_matProj * pos;
|
||||
#else
|
||||
pos = cc_matViewProj * pos;
|
||||
#endif
|
||||
|
||||
uv0 = a_texCoord;
|
||||
#if SAMPLE_FROM_RT
|
||||
CC_HANDLE_RT_SAMPLE_FLIP(uv0);
|
||||
#endif
|
||||
color = a_color;
|
||||
|
||||
return pos;
|
||||
}
|
||||
}%
|
||||
|
||||
CCProgram sprite-fs %{
|
||||
precision highp float;
|
||||
#include <builtin/internal/embedded-alpha>
|
||||
#include <builtin/internal/alpha-test>
|
||||
|
||||
in vec4 color;
|
||||
|
||||
uniform FSConstants {
|
||||
vec4 glowColor;
|
||||
float glowWidth;
|
||||
float glowThreshold;
|
||||
};
|
||||
|
||||
#if USE_TEXTURE
|
||||
in vec2 uv0;
|
||||
#pragma builtin(local)
|
||||
layout(set = 2, binding = 12) uniform sampler2D cc_spriteTexture;
|
||||
#endif
|
||||
|
||||
vec4 getTextureColor (sampler2D mainTexture, vec2 uv) {
|
||||
if (uv.x > 1.0 || uv.x < 0.0 || uv.y > 1.0 || uv.y < 0.0) {
|
||||
return vec4(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
return texture(mainTexture, uv);
|
||||
}
|
||||
|
||||
float getColorAlpha (float angle, float dist) {
|
||||
// 角度转弧度,公式为:弧度 = 角度 * (pi / 180)
|
||||
float radian = angle * 3.14 / 180.0;
|
||||
vec2 newUV = uv0 + vec2(dist * cos(radian), dist * sin(radian));
|
||||
vec4 color = getTextureColor(cc_spriteTexture, newUV);
|
||||
return color.a;
|
||||
}
|
||||
|
||||
float getAverageAlpha (float dist) {
|
||||
float totalAlpha = 0.0;
|
||||
|
||||
totalAlpha += getColorAlpha(0.0, dist);
|
||||
totalAlpha += getColorAlpha(30.0, dist);
|
||||
totalAlpha += getColorAlpha(60.0, dist);
|
||||
totalAlpha += getColorAlpha(90.0, dist);
|
||||
totalAlpha += getColorAlpha(120.0, dist);
|
||||
totalAlpha += getColorAlpha(150.0, dist);
|
||||
totalAlpha += getColorAlpha(180.0, dist);
|
||||
totalAlpha += getColorAlpha(210.0, dist);
|
||||
totalAlpha += getColorAlpha(240.0, dist);
|
||||
totalAlpha += getColorAlpha(270.0, dist);
|
||||
totalAlpha += getColorAlpha(300.0, dist);
|
||||
totalAlpha += getColorAlpha(330.0, dist);
|
||||
|
||||
return totalAlpha * 0.0833;
|
||||
}
|
||||
|
||||
float getGlowAlpha () {
|
||||
if (glowWidth == 0.0 ) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float totalAlpha = 0.0;
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.1);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.2);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.3);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.4);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.5);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.6);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.7);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.8);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 0.9);
|
||||
totalAlpha += getAverageAlpha(glowWidth * 1.0);
|
||||
|
||||
return totalAlpha * 0.1;
|
||||
}
|
||||
|
||||
vec4 frag () {
|
||||
vec4 o = vec4(1, 1, 1, 1);
|
||||
|
||||
#if USE_TEXTURE
|
||||
o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);
|
||||
#if IS_GRAY
|
||||
float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b;
|
||||
o.r = o.g = o.b = gray;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
float alpha = getGlowAlpha();
|
||||
|
||||
if (alpha <= glowThreshold) {
|
||||
alpha /= glowThreshold;
|
||||
alpha = -1.0 * (alpha - 1.0) * (alpha - 1.0) * (alpha - 1.0) * (alpha - 1.0) + 1.0;
|
||||
} else {
|
||||
alpha = 0.0;
|
||||
}
|
||||
|
||||
vec4 dstColor = glowColor * alpha;
|
||||
vec4 scrColor = o;
|
||||
|
||||
o = scrColor * scrColor.a + dstColor * (1.0 - scrColor.a);
|
||||
|
||||
o *= color;
|
||||
ALPHA_TEST(o);
|
||||
return o;
|
||||
}
|
||||
}%
|
||||
@@ -1 +0,0 @@
|
||||
{"ver":"1.7.1","importer":"effect","imported":true,"uuid":"40c25c17-db22-4ae7-8d3a-f73cbb6d36ba","files":[".json"],"subMetas":{},"userData":{"combinations":[{}]}}
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "f9iLivg4dHhJksWCjvY9/w"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "6cZu2rl69OR5+l1nRZerhd"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "e4zlwtvd5P+aVOci53P5lC"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "beiAlRY51OUIUqmpz9SWoV"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": false,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "b4+2TVK9JC7p5lhflMVjuO"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "35IEDlwu9Ch7vrlwlSwNdw"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "406uXfKLJEbab+NVEqD1aS"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "71mx/IdRVDz5H8mz6V7BsE"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -296,6 +299,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "1dn32Q7fxNOrkpyNeazdIo"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "devH7HFXJH/5FNGHYdEhes"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -316,14 +341,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -331,7 +356,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -344,15 +369,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -362,8 +381,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -371,7 +396,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -387,7 +412,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -402,7 +427,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -418,7 +443,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -433,7 +458,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -443,7 +468,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -463,7 +488,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -482,14 +507,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -497,7 +522,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -510,23 +535,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -534,7 +559,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -550,7 +575,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -565,7 +590,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -581,7 +606,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -596,7 +621,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -617,7 +642,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -636,14 +661,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -651,7 +676,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -664,20 +689,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -685,7 +710,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -701,7 +726,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -716,7 +741,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -732,7 +757,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -747,7 +772,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -761,14 +786,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -776,7 +801,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -789,20 +814,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -810,7 +835,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -826,7 +851,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -841,7 +866,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -857,7 +882,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -872,7 +897,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -889,7 +914,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -917,7 +942,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -932,13 +957,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -956,7 +980,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -990,7 +1014,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1027,16 +1051,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "1dn32Q7fxNOrkpyNeazdIo"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "65HGZeqCFG6I9S+QXhV5Iy"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "1dn32Q7fxNOrkpyNeazdIo"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "e4XOt+7BBBWYCH6pjBzbHe"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -935,13 +960,12 @@
|
||||
"__type__": "873f8d+SolMEo8DiTTxZRh4",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 1
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +983,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1017,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1054,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -22,23 +22,20 @@
|
||||
"__id__": 2
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
}
|
||||
],
|
||||
"_active": true,
|
||||
"_components": [
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 55
|
||||
},
|
||||
@@ -50,10 +47,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 61
|
||||
},
|
||||
{
|
||||
"__id__": 63
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 63
|
||||
"__id__": 65
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -106,10 +106,13 @@
|
||||
},
|
||||
{
|
||||
"__id__": 9
|
||||
},
|
||||
{
|
||||
"__id__": 11
|
||||
}
|
||||
],
|
||||
"_prefab": {
|
||||
"__id__": 11
|
||||
"__id__": 13
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@@ -299,6 +302,28 @@
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "1dn32Q7fxNOrkpyNeazdIo"
|
||||
},
|
||||
{
|
||||
"__type__": "954e43Y+QJHNIUpmqTCWA7A",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 12
|
||||
},
|
||||
"hitFlashMaterial": {
|
||||
"__uuid__": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"__expectedType__": "cc.Material"
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
{
|
||||
"__type__": "cc.CompPrefabInfo",
|
||||
"fileId": "d05NTLi3pF055eJmK0otVJ"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
@@ -319,14 +344,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 13
|
||||
"__id__": 15
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "e1b8a315-ece3-41a2-941e-a66861753f1b",
|
||||
@@ -334,7 +359,7 @@
|
||||
},
|
||||
"fileId": "c46/YsCPVOJYA4mWEpNYRx",
|
||||
"instance": {
|
||||
"__id__": 14
|
||||
"__id__": 16
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -347,15 +372,9 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 15
|
||||
},
|
||||
{
|
||||
"__id__": 17
|
||||
},
|
||||
{
|
||||
"__id__": 18
|
||||
},
|
||||
{
|
||||
"__id__": 19
|
||||
},
|
||||
@@ -365,8 +384,14 @@
|
||||
{
|
||||
"__id__": 21
|
||||
},
|
||||
{
|
||||
"__id__": 22
|
||||
},
|
||||
{
|
||||
"__id__": 23
|
||||
},
|
||||
{
|
||||
"__id__": 25
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -374,7 +399,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -390,7 +415,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -405,7 +430,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -421,7 +446,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -436,7 +461,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -446,7 +471,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 22
|
||||
"__id__": 24
|
||||
},
|
||||
"propertyPath": [
|
||||
"_contentSize"
|
||||
@@ -466,7 +491,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 16
|
||||
"__id__": 18
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -485,14 +510,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 25
|
||||
"__id__": 27
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "50c3d5e4-49f8-4bd7-a15b-cda359a0ae5c",
|
||||
@@ -500,7 +525,7 @@
|
||||
},
|
||||
"fileId": "5fqU0L3/FOhKaco5UkHuWT",
|
||||
"instance": {
|
||||
"__id__": 26
|
||||
"__id__": 28
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -513,23 +538,23 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 27
|
||||
},
|
||||
{
|
||||
"__id__": 29
|
||||
},
|
||||
{
|
||||
"__id__": 30
|
||||
},
|
||||
{
|
||||
"__id__": 31
|
||||
},
|
||||
{
|
||||
"__id__": 32
|
||||
},
|
||||
{
|
||||
"__id__": 33
|
||||
},
|
||||
{
|
||||
"__id__": 34
|
||||
},
|
||||
{
|
||||
"__id__": 36
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -537,7 +562,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -553,7 +578,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -568,7 +593,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -584,7 +609,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -599,7 +624,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 33
|
||||
"__id__": 35
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -620,7 +645,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 28
|
||||
"__id__": 30
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lscale"
|
||||
@@ -639,14 +664,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 36
|
||||
"__id__": 38
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "5b4ca49e-0f12-4478-b56d-bf8198b36b90",
|
||||
@@ -654,7 +679,7 @@
|
||||
},
|
||||
"fileId": "0d6ZXmA5dHkZxoGONDL2sE",
|
||||
"instance": {
|
||||
"__id__": 37
|
||||
"__id__": 39
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -667,20 +692,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 38
|
||||
},
|
||||
{
|
||||
"__id__": 40
|
||||
},
|
||||
{
|
||||
"__id__": 41
|
||||
},
|
||||
{
|
||||
"__id__": 42
|
||||
},
|
||||
{
|
||||
"__id__": 43
|
||||
},
|
||||
{
|
||||
"__id__": 44
|
||||
},
|
||||
{
|
||||
"__id__": 45
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -688,7 +713,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -704,7 +729,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -719,7 +744,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -735,7 +760,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -750,7 +775,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 39
|
||||
"__id__": 41
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -764,14 +789,14 @@
|
||||
"__id__": 1
|
||||
},
|
||||
"_prefab": {
|
||||
"__id__": 45
|
||||
"__id__": 47
|
||||
},
|
||||
"__editorExtras__": {}
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": {
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
"asset": {
|
||||
"__uuid__": "ae4493bd-cbcc-4392-921c-3e2b0fcd5338",
|
||||
@@ -779,7 +804,7 @@
|
||||
},
|
||||
"fileId": "91yoyAQGNDm5ziI7NUChZ+",
|
||||
"instance": {
|
||||
"__id__": 46
|
||||
"__id__": 48
|
||||
},
|
||||
"targetOverrides": null
|
||||
},
|
||||
@@ -792,20 +817,20 @@
|
||||
"mountedChildren": [],
|
||||
"mountedComponents": [],
|
||||
"propertyOverrides": [
|
||||
{
|
||||
"__id__": 47
|
||||
},
|
||||
{
|
||||
"__id__": 49
|
||||
},
|
||||
{
|
||||
"__id__": 50
|
||||
},
|
||||
{
|
||||
"__id__": 51
|
||||
},
|
||||
{
|
||||
"__id__": 52
|
||||
},
|
||||
{
|
||||
"__id__": 53
|
||||
},
|
||||
{
|
||||
"__id__": 54
|
||||
}
|
||||
],
|
||||
"removedComponents": []
|
||||
@@ -813,7 +838,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_name"
|
||||
@@ -829,7 +854,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lpos"
|
||||
@@ -844,7 +869,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_lrot"
|
||||
@@ -860,7 +885,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_euler"
|
||||
@@ -875,7 +900,7 @@
|
||||
{
|
||||
"__type__": "CCPropertyOverrideInfo",
|
||||
"targetInfo": {
|
||||
"__id__": 48
|
||||
"__id__": 50
|
||||
},
|
||||
"propertyPath": [
|
||||
"_active"
|
||||
@@ -892,7 +917,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 54
|
||||
"__id__": 56
|
||||
},
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
@@ -920,7 +945,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 56
|
||||
"__id__": 58
|
||||
},
|
||||
"anm": {
|
||||
"__id__": 5
|
||||
@@ -941,7 +966,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 58
|
||||
"__id__": 60
|
||||
},
|
||||
"_id": ""
|
||||
},
|
||||
@@ -959,7 +984,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 60
|
||||
"__id__": 62
|
||||
},
|
||||
"enabledContactListener": true,
|
||||
"bullet": false,
|
||||
@@ -993,7 +1018,7 @@
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": {
|
||||
"__id__": 62
|
||||
"__id__": 64
|
||||
},
|
||||
"tag": 0,
|
||||
"_group": 4,
|
||||
@@ -1030,16 +1055,16 @@
|
||||
"targetOverrides": null,
|
||||
"nestedPrefabInstanceRoots": [
|
||||
{
|
||||
"__id__": 44
|
||||
"__id__": 46
|
||||
},
|
||||
{
|
||||
"__id__": 35
|
||||
"__id__": 37
|
||||
},
|
||||
{
|
||||
"__id__": 24
|
||||
"__id__": 26
|
||||
},
|
||||
{
|
||||
"__id__": 12
|
||||
"__id__": 14
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,108 +1,38 @@
|
||||
# 游戏设计文档
|
||||
|
||||
## 游戏核心概念
|
||||
本游戏是一款单局制肉鸽(Roguelike)塔防游戏,玩家通过策略性地选择每波怪物清理后的奖励来强化自己的英雄队伍,最终挑战强大的Boss。
|
||||
本游戏是一款单局制肉鸽(Roguelike)自走,战斗,塔防 游戏,玩家通过策略性地选择每波怪物清理后的奖励来强化自己的英雄队伍,最终挑战强大的Boss。
|
||||
|
||||
## 核心玩法机制
|
||||
|
||||
### 1. 自动战斗系统
|
||||
- 所有攻击和战斗均为自动进行,玩家无需手动操作
|
||||
- 玩家只需在每波怪物清理后选择奖励选项
|
||||
- 英雄会根据配置自动释放技能攻击敌人
|
||||
## 战斗
|
||||
技能: 普攻技能,一般技能,必杀技能
|
||||
普攻和一般技能自动触发,必杀技能默认自动触发,可以手动触发
|
||||
|
||||
### 2. 奖励选择系统
|
||||
- 每波怪物清理后提供三种奖励选项:弱、一般、强
|
||||
- 不同奖励选项消耗不同的金币数量
|
||||
- 奖励类型包括:英雄强化、技能升级、装备获取、属性提升,新技能获得等
|
||||
- 每个奖励有一个战力评分,评分越高,能力越强,消耗金币越多
|
||||
## 天赋
|
||||
风怒: 普通攻击3次后, 目标额外收到1次150%伤害
|
||||
溅射: 普通攻击3次后, 会对目标100像素外的敌人额外造成30%伤害
|
||||
|
||||
### 3. 金币经济系统
|
||||
- 金币通过击败怪物固定掉落获得
|
||||
- 总体金币数量是固定的,需要玩家合理分配
|
||||
- 金币用于购买奖励选项,策略性消费是游戏核心
|
||||
回蓝: 普通攻击3次后,恢复5%的蓝值
|
||||
回血: 普通攻击3次后, 恢复5%的生命值
|
||||
|
||||
### 4. 特殊事件系统
|
||||
- 特定关卡设置事件管卡
|
||||
- 事件管卡提供特殊奖励:
|
||||
- 额外金币奖励
|
||||
- 额外属性加成
|
||||
- 额外技能奖励
|
||||
- 稀有装备获取
|
||||
冰封: 普通攻击3次后, 获得5%的冻结率(可叠加,触发清零) :冻结受到伤害的目标,目标无法移动和攻击(cd继续), 3秒后自动解冻
|
||||
沉默: 普通攻击3次后, 获得5%的沉默率(可叠加,触发清零) :沉默收到伤害的目标,目标一般技能和必杀技能技能cd清零
|
||||
击晕: 普通攻击3次后, 获得5%的击晕率(可叠加,触发清零) :击晕收到伤害的目标,目标无移动和cd暂停
|
||||
击退: 普通攻击3次后, 获得5%的击退率(可叠加,触发清零) :击退收到伤害的目标, cd减少5点,
|
||||
会心: 普通攻击1次后, 获得5%的暴击率(可叠加,触发清零)
|
||||
|
||||
### 5. 评分与成就系统
|
||||
- 建立评分机制评价:
|
||||
- 装备评分:根据装备属性加成计算
|
||||
- 技能评分:根据技能效果计算
|
||||
- 杀怪数量评分:根据击败怪物数量计算
|
||||
- 特殊事件奖励评分:根据特殊事件奖励计算
|
||||
- 受伤评分:根据英雄受伤hp值和受伤次数进行评分
|
||||
- DPS评分:根据英雄每秒伤害能力计算
|
||||
- 最大伤害值评分:根据英雄最大伤害值计算
|
||||
- 高评分可解锁特殊成就和奖励
|
||||
熟练: 普通攻击10次后, 获得下2次一般技能触发2次
|
||||
|
||||
## 游戏进程设计
|
||||
反击: 被攻击3次后, 给于目标50%的伤害
|
||||
护盾: 被攻击3次后,获得20%生命值护盾
|
||||
减伤: 被攻击3次后,下1次伤害减50%
|
||||
|
||||
### 关卡结构
|
||||
1. **普通关卡**:基础怪物波次,提供常规奖励选择
|
||||
2. **精英关卡**:更强的精英怪物,提供高级奖励
|
||||
3. **Boss关卡**:强大的Boss敌人,胜利后获得丰厚奖励
|
||||
4. **事件关卡**:特殊事件触发,提供独特奖励或挑战
|
||||
背水: 每失去50%生命值,获得下10次普通攻击暴击
|
||||
|
||||
### 难度递增机制
|
||||
- 随着关卡推进,怪物强度逐步提升
|
||||
- 后期关卡出现组合怪物群,需要策略应对
|
||||
- 特殊机制随进度解锁,增加游戏深度
|
||||
|
||||
## 英雄系统设计
|
||||
### 英雄类型
|
||||
- **战士型**:高生命值,近战输出
|
||||
- **远程型**:远程攻击,较高攻击力
|
||||
- **法师职业**:魔法攻击,范围伤害
|
||||
- **辅助类型**:支援型技能,团队增益
|
||||
- **刺客类型**:高爆发,机动性强
|
||||
|
||||
### 英雄成长
|
||||
- 三选一奖励中,有属性提升,有技能升级,有新技能解锁,有装备获取
|
||||
- 属性提升:
|
||||
- 提升英雄基础属性,包括生命值、攻击力、防御力、速度等
|
||||
- 提升属性值根据奖励评分确定
|
||||
- 技能升级:
|
||||
- 升级普通攻击技能或大招技能
|
||||
- 升级后技能效果提升,消耗金币
|
||||
- 新技能解锁:
|
||||
- 解锁新技能,增加英雄战斗能力
|
||||
- 解锁新技能后,可选择升级或不升级
|
||||
- 装备获取:
|
||||
- 获取新装备,增加英雄属性加成
|
||||
- 装备属性根据奖励评分确定
|
||||
|
||||
### 技能系统
|
||||
- 每个英雄拥初始拥有1个普通攻击技能和大招技能,技能消耗mp值和固定cd
|
||||
- 后续通过,每次的奖励可选择升级普通攻击技能、大招技能或新技能
|
||||
-
|
||||
|
||||
## 策略深度设计
|
||||
|
||||
### Build构筑
|
||||
- 玩家通过不同奖励选择形成独特的英雄Build
|
||||
- 鼓励尝试不同的流派和策略组合
|
||||
- 多样化的成长路径提供重玩价值
|
||||
|
||||
### 资源管理
|
||||
- 固定金币总量要求玩家合理分配资源
|
||||
- 不同奖励选项的价值评估增加策略性
|
||||
- 短期收益与长期发展之间的权衡
|
||||
|
||||
## 界面与交互设计
|
||||
|
||||
### 核心界面
|
||||
1. **战斗界面**:显示英雄、怪物、战斗过程
|
||||
2. **奖励选择界面**:三选一奖励展示与选择
|
||||
3. **英雄信息界面**:查看英雄属性、技能、装备
|
||||
4. **关卡进度界面**:显示当前关卡进度和目标
|
||||
|
||||
### 交互逻辑
|
||||
- 简化操作,主要通过点击进行选择
|
||||
- 清晰的视觉反馈显示战斗结果
|
||||
- 直观的奖励预览帮助玩家决策
|
||||
勤勉: 每升1级,获得下5次技能暴击
|
||||
|
||||
## 特殊状态说明
|
||||
冰封: 目标无法移动和攻击(cd继续), 3秒后自动解冻
|
||||
沉默: 目标一般技能和必杀技能技能cd清零
|
||||
击晕: 目标无移动和cd暂停
|
||||
击退: 后退15像素,cd减少5点,
|
||||
11
assets/script/ecs.md.meta
Normal file
11
assets/script/ecs.md.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.1",
|
||||
"importer": "text",
|
||||
"imported": true,
|
||||
"uuid": "1f3ba9b7-02ad-406f-86b3-895009bcb3e7",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -14,19 +14,11 @@ export enum BoxSet {
|
||||
DEFAULT = 1,
|
||||
MONSTER = 2,
|
||||
HERO = 4,
|
||||
// MONSTER_SKILL = 8,
|
||||
// HERO_SKILL = 16,
|
||||
// PLAYER=32,
|
||||
// BOSS=64,
|
||||
|
||||
// BOX_WIDTH = 64,
|
||||
// BOX_HEIGHT = 64,
|
||||
//地图边界
|
||||
LETF_END = -420,
|
||||
RIGHT_END = 420,
|
||||
|
||||
//游戏地平线
|
||||
GAME_LINE = 0,
|
||||
GAME_LINE = 120,
|
||||
//攻击距离
|
||||
}
|
||||
|
||||
@@ -97,6 +89,8 @@ export enum FightSet {
|
||||
ATK_ADD_COUNT=4,//伙伴攻击力增加
|
||||
ATK_ADD_GLOD=1,//金币增加
|
||||
CRIT_DAMAGE=50,//暴击伤害
|
||||
DEF_C=100,//物理防御常数C
|
||||
MDEF_C=100,//魔法防御常数C
|
||||
DOUBLE_ATK_RATE=100,//额外攻击默认概率
|
||||
GREEN_GOLD=1,//绿色金币
|
||||
BLUE_GOLD=2,//蓝色金币
|
||||
|
||||
@@ -17,18 +17,7 @@ export enum NeAttrs {
|
||||
IN_BURN = 2,
|
||||
IN_POISON = 3,
|
||||
}
|
||||
export const getNeAttrs = () => {
|
||||
let reAttrs = {};
|
||||
Object.keys(NeAttrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = {
|
||||
value: 0,
|
||||
time: 0,
|
||||
};
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
|
||||
// ========== 属性枚举 ==========
|
||||
/**
|
||||
* 英雄属性枚举
|
||||
@@ -65,7 +54,6 @@ export enum Attrs {
|
||||
THORNS = 25, // 反伤
|
||||
CRITICAL_RESIST = 26, // 暴击抗性
|
||||
CON_RES = 27, // 控制抗性
|
||||
MAGIC_RES = 28, // 魔法抗性
|
||||
|
||||
// ========== 暴击与命中属性 (30-39) ==========
|
||||
CRITICAL = 30, // 暴击率
|
||||
@@ -76,9 +64,13 @@ export enum Attrs {
|
||||
ICE_RES = 40, // 冰冻抗性
|
||||
FIRE_RES = 41, // 火焰抗性
|
||||
WIND_RES = 42, // 自然抗性
|
||||
ICE_POWER = 43, // 冰冻伤害加成
|
||||
FIRE_POWER = 44, // 火焰伤害加成
|
||||
WIND_POWER = 45, // 自然伤害加成
|
||||
PHYS_RES = 43, // 物理抗性
|
||||
MAGIC_RES = 44, // 魔法抗性
|
||||
ICE_POWER = 45, // 冰冻伤害加成
|
||||
FIRE_POWER = 46, // 火焰伤害加成
|
||||
WIND_POWER = 47, // 自然伤害加成
|
||||
PHYS_POWER = 48, // 物理伤害加成
|
||||
MAGIC_POWER= 49,
|
||||
|
||||
|
||||
// ========== 特殊效果属性 (50-59) ==========
|
||||
@@ -87,10 +79,10 @@ export enum Attrs {
|
||||
FREEZE_CHANCE = 52, // 冰冻概率
|
||||
BURN_CHANCE = 53, // 燃烧概率
|
||||
STUN_CHANCE = 54, // 眩晕概率
|
||||
KNOCKBACK = 55, // 击退概率
|
||||
BACK_CHANCE = 55, // 击退概率
|
||||
SLOW_CHANCE = 56, // 减速概率
|
||||
POISON_CHANCE = 57, // 中毒概率
|
||||
CHAIN_CHANCE = 58, // 连锁概率
|
||||
SILENCE_CHANCE = 58, // 沉默概率
|
||||
EXPLOSION_CHANCE = 59, // 爆炸概率
|
||||
|
||||
// ========== 增益效果属性 (60-69) ==========
|
||||
@@ -108,7 +100,6 @@ export enum Attrs {
|
||||
// ========== 武器进化相关 (70-79) ==========
|
||||
PUNCTURE = 70, // 穿刺次数
|
||||
PUNCTURE_DMG = 71, // 穿刺伤害
|
||||
BACK = 73, // 被击退概率(兼容旧代码)
|
||||
MOVE_SPEED = 74, // 移动速度
|
||||
BURN = 75, // 易伤效果
|
||||
WFUNY = 77, // 风怒
|
||||
@@ -141,6 +132,18 @@ export const getAttrs = () => {
|
||||
return reAttrs;
|
||||
}
|
||||
|
||||
export const getNeAttrs = () => {
|
||||
let reAttrs = {};
|
||||
Object.keys(NeAttrs).forEach(key => {
|
||||
if (!isNaN(Number(key))) {
|
||||
reAttrs[Number(key)] = {
|
||||
value: 0,
|
||||
time: 0,
|
||||
};
|
||||
}
|
||||
});
|
||||
return reAttrs;
|
||||
}
|
||||
/**
|
||||
* 属性类型配置表
|
||||
* 用于区分每个属性是数值型还是百分比型
|
||||
@@ -183,15 +186,19 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
[Attrs.HIT]: BType.RATIO, // 命中率 - 百分比型
|
||||
[Attrs.CRITICAL_RESIST]: BType.RATIO, // 暴击抗性 - 百分比型
|
||||
[Attrs.CON_RES]: BType.RATIO, // 控制抗性 - 百分比型
|
||||
[Attrs.MAGIC_RES]: BType.RATIO, // 魔法抗性 - 百分比型
|
||||
|
||||
|
||||
// ========== 元素属性(百分比型) ==========
|
||||
[Attrs.ICE_RES]: BType.RATIO, // 冰冻抗性 - 百分比型
|
||||
[Attrs.FIRE_RES]: BType.RATIO, // 火焰抗性 - 百分比型
|
||||
[Attrs.WIND_RES]: BType.RATIO, // 风抗性 - 百分比型
|
||||
[Attrs.PHYS_RES]: BType.RATIO, // 物理抗性 - 百分比型
|
||||
[Attrs.MAGIC_RES]:BType.RATIO,
|
||||
[Attrs.ICE_POWER]: BType.RATIO, // 冰冻伤害加成 - 百分比型
|
||||
[Attrs.FIRE_POWER]: BType.RATIO, // 火焰伤害加成 - 百分比型
|
||||
[Attrs.WIND_POWER]: BType.RATIO, // 风伤害加成 - 百分比型
|
||||
[Attrs.PHYS_POWER]: BType.RATIO, // 物理伤害加成 - 百分比型
|
||||
[Attrs.MAGIC_POWER]: BType.RATIO, // 物理伤害加成 - 百分比型
|
||||
|
||||
// ========== 特殊效果属性(百分比型) ==========
|
||||
[Attrs.LIFESTEAL]: BType.RATIO, // 吸血比率 - 百分比型
|
||||
@@ -199,10 +206,10 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
[Attrs.FREEZE_CHANCE]: BType.RATIO, // 冰冻概率 - 百分比型
|
||||
[Attrs.BURN_CHANCE]: BType.RATIO, // 燃烧概率 - 百分比型
|
||||
[Attrs.STUN_CHANCE]: BType.RATIO, // 眩晕概率 - 百分比型
|
||||
[Attrs.KNOCKBACK]: BType.RATIO, // 击退 - 百分比型
|
||||
[Attrs.BACK_CHANCE]: BType.RATIO, // 击退概率 - 百分比型
|
||||
[Attrs.SLOW_CHANCE]: BType.RATIO, // 减速概率 - 百分比型
|
||||
[Attrs.POISON_CHANCE]: BType.RATIO, // 中毒概率 - 百分比型
|
||||
[Attrs.CHAIN_CHANCE]: BType.RATIO, // 连锁概率 - 百分比型
|
||||
[Attrs.SILENCE_CHANCE]: BType.RATIO, // 沉默概率 - 百分比型
|
||||
[Attrs.EXPLOSION_CHANCE]: BType.RATIO, // 爆炸概率 - 百分比型
|
||||
|
||||
// ========== 增益效果属性(百分比型) ==========
|
||||
@@ -220,7 +227,6 @@ export const AttrsType: Record<Attrs, BType> = {
|
||||
// ========== 武器进化相关(混合类型) ==========
|
||||
[Attrs.PUNCTURE]: BType.VALUE, // 穿刺次数 - 数值型
|
||||
[Attrs.PUNCTURE_DMG]: BType.RATIO, // 穿刺伤害 - 百分比型
|
||||
[Attrs.BACK]: BType.RATIO, // 被击退概率(兼容)- 百分比型
|
||||
[Attrs.MOVE_SPEED]: BType.VALUE, // 移动速度 - 数值型
|
||||
[Attrs.BURN]: BType.RATIO, // 易伤效果 - 百分比型
|
||||
[Attrs.WFUNY]: BType.RATIO, // 未知特殊属性 - 百分比型
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
// ========== 从 HeroAttrs.ts 导入属性相关定义 ==========
|
||||
import { Attrs, NeAttrs,BType, getAttrs, AttrsType, isRatioAttr } from "./HeroAttrs";
|
||||
|
||||
export enum HSSet {
|
||||
atk = 0, // 普通攻击
|
||||
skill = 1, // 一般技能
|
||||
max = 2, // 必杀技
|
||||
}
|
||||
|
||||
export enum TGroup {
|
||||
Self = 0, // 自身
|
||||
Ally = 1, // 所有敌人
|
||||
@@ -74,7 +81,6 @@ export enum EType {
|
||||
//debuff类型
|
||||
|
||||
|
||||
|
||||
/*
|
||||
=== 技能配置系统使用说明 ===
|
||||
|
||||
@@ -100,6 +106,7 @@ export enum EType {
|
||||
- ap: 攻击力百分比
|
||||
- cd: 冷却时间
|
||||
- hit_num: 范围攻击 伤害敌人数量
|
||||
- t_num: 目标数量
|
||||
- hit: 穿刺个数
|
||||
- hitcd: 持续伤害的伤害间隔
|
||||
- speed: 移动速度
|
||||
@@ -107,7 +114,9 @@ export enum EType {
|
||||
*/
|
||||
export enum DType {
|
||||
ATK= 0, // 物理
|
||||
MAGE=1, // 魔法
|
||||
ICE=1, // 冰元素
|
||||
FIRE=2, // 火元素
|
||||
WIND=3, // 风元素
|
||||
}
|
||||
export const HeroSkillList = [6001,6001,6001,6001,6001,6001]
|
||||
|
||||
@@ -144,7 +153,7 @@ interface IEndAnm {
|
||||
// 技能配置接口 - 按照6001格式排列
|
||||
export interface SkillConfig {
|
||||
uuid:number,name:string,sp_name:string,icon:string,TGroup:TGroup,SType:SType,act:string,DTType:DTType,DType:DType,
|
||||
ap:number,cd:number,t_num:number,hit_num:number,hit:number,hitcd:number,speed:number,cost:number,with:number,dis:Number,ready:number,EAnm:number,DAnm:number,RType:RType,EType:EType,
|
||||
ap:number,map:number,cd:number,t_num:number,hit_num:number,hit:number,hitcd:number,speed:number,cost:number,with:number,dis:Number,ready:number,EAnm:number,DAnm:number,RType:RType,EType:EType,
|
||||
buffs:BuffConf[],neAttrs:NeAttrsConf[],info:string,hero?:number ,
|
||||
}
|
||||
|
||||
@@ -152,18 +161,18 @@ export const SkillSet: Record<number, SkillConfig> = {
|
||||
// ========== 基础攻击 ========== 6001-6099
|
||||
6001: {
|
||||
uuid:6001,name:"挥击",sp_name:"atk_s1",icon:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.ATK,
|
||||
ap:100,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:0,with:0,dis:80,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,
|
||||
ap:100,map:0,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:0,with:0,dis:80,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,
|
||||
buffs:[],neAttrs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害",
|
||||
},
|
||||
6002: {
|
||||
uuid:6002,name:"挥砍",sp_name:"atk_s4",icon:"3036",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.ATK,
|
||||
ap:100,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:0,with:0,dis:80,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,
|
||||
ap:100,map:0,cd:1,t_num:1,hit_num:1,hit:1,hitcd:0.2,speed:720,cost:0,with:0,dis:80,ready:0,EAnm:0,DAnm:9001,RType:RType.fixed,EType:EType.animationEnd,
|
||||
buffs:[],neAttrs:[],info:"向最前方敌人扔出石斧,造成100%攻击的伤害",
|
||||
},
|
||||
6005: {
|
||||
uuid:6005,name:"水球",sp_name:"m_water_ball_1",icon:"3039",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.MAGE,
|
||||
ap:100,cd:5,t_num:1,hit_num:1,hit:2,hitcd:0.3,speed:720,cost:0,with:90,dis:360,ready:8001,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,
|
||||
buffs:[],neAttrs:[],info:"召唤大火球攻击前方所有敌人,造成300%攻击的伤害,有一定几率施加灼烧",
|
||||
uuid:6005,name:"水球",sp_name:"m_water_ball_1",icon:"3039",TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,DType:DType.ICE,
|
||||
ap:0,map:100,cd:5,t_num:1,hit_num:1,hit:2,hitcd:0.3,speed:720,cost:0,with:90,dis:360,ready:8001,EAnm:0,DAnm:9001,RType:RType.linear,EType:EType.collision,
|
||||
buffs:[],neAttrs:[],info:"召唤水球攻击前方敌人,造成100%魔法攻击的伤害",
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
@@ -1,56 +1,72 @@
|
||||
/**
|
||||
* 天赋系统配置文件
|
||||
* 支持定义英雄的特殊能力或特性
|
||||
*/
|
||||
|
||||
import { count } from "console";
|
||||
import { Attrs, BType } from "./HeroAttrs";
|
||||
import { SkillSet } from "./SkillSet";
|
||||
|
||||
// ========== 枚举定义 ==========
|
||||
|
||||
/**
|
||||
* 天赋类型枚举,也是触发条件
|
||||
*/
|
||||
export enum TalType {
|
||||
LEVEL = 1, // 基于特定等级触发
|
||||
LEVEL_UP = 2, // 基于等级升级触发
|
||||
ACTION_COUNT = 3, // 基于普通攻击触发, skills[0]计数触发
|
||||
SKILL_COUNT = 4, // 基于技能触发, > skills[0]计数触发
|
||||
DAMAGE_COUNT = 5, // 基于受伤次数触发
|
||||
INIT = 6, // 初始触发,如:多1个技能
|
||||
DEAD = 7 // 基于死亡触发
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发效果
|
||||
*/
|
||||
export enum TalEType {
|
||||
ATTRS = 1, // 属性修改
|
||||
SKILL = 2, // 技能触发
|
||||
SKILL_MORE = 3, // 天生多1个技能
|
||||
export enum TriType {
|
||||
LUP = 1, // 等级升触发
|
||||
ATK = 2, //普通攻击触发
|
||||
DMG = 3, // 受伤触发
|
||||
SKILL = 4, // 技能触发
|
||||
MAX = 5, // 必杀触发
|
||||
HPL = 6, // 失去生命值触发
|
||||
HPA = 7, // 获得生命值触发
|
||||
INIT = 8, // 初始触发,如:多1个技能
|
||||
DEAD = 9, // 基于死亡触发
|
||||
}
|
||||
|
||||
|
||||
|
||||
export enum TalEffet {
|
||||
ATK_DMG=1, // 伤害
|
||||
SKILL_DMG=2, // 技能伤害
|
||||
HP=3, // 回血 百分比
|
||||
MP=4, //回蓝 百分比
|
||||
BUFF = 5, // 暴击率,闪避率等,可叠加的触发后清零
|
||||
STATS=6, // 状态
|
||||
WFUNY=7, // 风怒
|
||||
SPLASH=8, // 溅射
|
||||
D_SKILL=9, //两次技能
|
||||
SHIELD=10, // 护盾
|
||||
LDMG=11, // 减伤
|
||||
C_ATK=12, // 普工必爆
|
||||
C_SKILL=13, // 一般技能必暴
|
||||
C_MSKILL=14, // 必杀技能必暴
|
||||
}
|
||||
|
||||
export enum TalTarget {
|
||||
SELF = 1, // 自己触发
|
||||
ENEMY = 2, // 敌人触发
|
||||
}
|
||||
|
||||
export enum TalAttrs {
|
||||
NON=0,
|
||||
FREEZE_CHANCE=Attrs.FREEZE_CHANCE, // 冰冻概率
|
||||
STUN_CHANCE=Attrs.STUN_CHANCE, // 冰冻概率
|
||||
BACK_CHANCE=Attrs.BACK_CHANCE, // 击退概率
|
||||
SILENCE_CHANCE=Attrs.SILENCE_CHANCE, // 沉默概率
|
||||
CRITICAL=Attrs.CRITICAL, // 暴击率
|
||||
AP=Attrs.AP, // 攻击力
|
||||
MP=Attrs.MAP, // 魔法
|
||||
}
|
||||
/**
|
||||
* 天赋配置接口
|
||||
* 定义一个完整的天赋效果
|
||||
*/
|
||||
|
||||
export interface ItalConf {
|
||||
uuid: number; // 天赋ID
|
||||
name: string; // 天赋名称
|
||||
triType: TriType;
|
||||
target: TalTarget;
|
||||
effet: TalEffet;
|
||||
vType:BType; //数值型还是百分比型
|
||||
value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid)
|
||||
attrs?:TalAttrs //触发的attrs效果的对应attrs
|
||||
Trigger:number //触发值
|
||||
desc: string; // 天赋描述(说明触发条件和效果)
|
||||
type: TalType;
|
||||
triggerType: TalEType; // 触发效果类型
|
||||
chance: number; // 触发概率,默认100,`0-100`之间的数字
|
||||
t_value: number; // 触发的阈值(如5级触发一次, 5次攻击触发一次,初始触发)
|
||||
e_value: number; // 触发的效果值(如增加10%攻击力, 触发的技能uuid,增加1个技能uuid)
|
||||
e_name: number; // 触发的特殊值,如具体属性类型, 0表示没有特定值,对应Attrs枚举
|
||||
e_type: BType; // 效果类型, 主要针对属性修改,是百分比还是固定值
|
||||
e_scaling: number; // 效果随等级缩放系数,默认1, 0.5表示效果随等级减半
|
||||
e_count: number; // 触发效果的累计次数(如触发2次技能实现召唤2个召唤物)
|
||||
stackable?: boolean; // 是否可堆叠效果(默认true)
|
||||
maxStack?: number; // 最大堆叠次数(不设置表示无限制)
|
||||
count:number //执行次数,及可以触发的次数
|
||||
}
|
||||
|
||||
// ========== 天赋配置表 ==========
|
||||
@@ -70,44 +86,44 @@ export interface ItalConf {
|
||||
* 4. 技能触发类:当特定条件满足时自动触发指定技能
|
||||
*/
|
||||
export const talConf: Record<number, ItalConf> = {
|
||||
// ========== 等级类天赋 ==========
|
||||
/*** 普通攻击触发 ***/
|
||||
7001:{uuid:7001,name:"风怒",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.WFUNY,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||
desc:"普通攻击3次后, 立即给与目标150%伤害的额外打击"},
|
||||
7002:{uuid:7002,name:"溅射",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.SPLASH,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||
desc:"普通攻击3次后, 会对目标100码内的敌人造成30%伤害"},
|
||||
7003:{uuid:7003,name:"回血",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.HP,vType:BType.RATIO, value:1,attrs:TalAttrs.NON,
|
||||
desc:"普通攻击3次后, 会回复10%的生命值"},
|
||||
7004:{uuid:7004,name:"回蓝",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.MP,vType:BType.RATIO, value:1,attrs:TalAttrs.NON,
|
||||
desc:"普通攻击3次后, 会回复10%的蓝值"},
|
||||
7005:{uuid:7005,name:"冰冻",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.FREEZE_CHANCE,
|
||||
desc:"普通攻击3次后, 获得5%的冻结率"},
|
||||
7006:{uuid:7006,name:"沉默",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.SILENCE_CHANCE,
|
||||
desc:"普通攻击3次后, 获得5%的沉默率"},
|
||||
7007:{uuid:7007,name:"击退",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.BACK_CHANCE,
|
||||
desc:"普通攻击3次后, 获得5%的击退率"},
|
||||
7008:{uuid:7008,name:"会心",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.CRITICAL,
|
||||
desc:"普通攻击3次后, 获得5%的暴击率"},
|
||||
7009:{uuid:7009,name:"眩晕",triType:TriType.ATK,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.BUFF,vType:BType.RATIO, value:5,attrs:TalAttrs.STUN_CHANCE,
|
||||
desc:"普通攻击3次后, 获得5%的眩晕率"},
|
||||
7010:{uuid:7010,name:"熟练",triType:TriType.ATK,Trigger:10,count:1,target:TalTarget.SELF,effet:TalEffet.D_SKILL,vType:BType.RATIO, value:0,attrs:TalAttrs.NON,
|
||||
desc:"普通攻击10次后, 下次一般技能额外释放1次,伤害100%"},
|
||||
|
||||
// 剑意提升 - 刘邦专属 | 每5级 | 攻击力+10%
|
||||
7001: {uuid: 7001, name: "剑意提升", desc: "每升5级,攻击力增加10%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS,
|
||||
chance: 100, t_value: 5, e_value: 0.10, e_name: Attrs.AP, e_type: BType.RATIO, e_scaling: 1, e_count: 1, stackable: true, maxStack: 10},
|
||||
/*** 受伤触发 ***/
|
||||
7101:{uuid:7101,name:"反击",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.ATK_DMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||
desc:"被攻击3次后, 给于目标50%的伤害"},
|
||||
7102:{uuid:7102,name:"护盾",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.SELF,effet:TalEffet.SHIELD,vType:BType.RATIO, value:20,attrs:TalAttrs.NON,
|
||||
desc:"被攻击3次后, 获得20%的生命值护盾"},
|
||||
7103:{uuid:7103,name:"减伤",triType:TriType.DMG,Trigger:3,count:1,target:TalTarget.ENEMY,effet:TalEffet.LDMG,vType:BType.RATIO, value:50,attrs:TalAttrs.NON,
|
||||
desc:"被攻击3次后, 下1次伤害减50%"},
|
||||
|
||||
// 胡服骑射 - 赵武灵王专属 | 每3级 | 攻击速度+5%
|
||||
7002: {uuid: 7002, name: "胡服骑射", desc: "每升3级,攻击速度增加5%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS,
|
||||
chance: 100, t_value: 3, e_value: 0.05, e_name: Attrs.AS, e_type: BType.RATIO, e_scaling: 1.2, e_count: 1, stackable: true, maxStack: 15},
|
||||
|
||||
// 运筹帷幄 - 张良专属 | 每4级 | 魔法攻击力+8%
|
||||
7004: {uuid: 7004, name: "运筹帷幄", desc: "每升4级,魔法攻击力增加8%", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS,
|
||||
chance: 100, t_value: 4, e_value: 0.08, e_name: Attrs.MAP, e_type: BType.RATIO, e_scaling: 1.3, e_count: 1, stackable: true, maxStack: 12},
|
||||
/*** 失去血量触发 ***/
|
||||
7201:{uuid:7201,name:"背水",triType:TriType.HPL,Trigger:50,count:10,target:TalTarget.SELF,effet:TalEffet.C_ATK,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
||||
desc:"每失去50%生命值,获得下10次普通攻击暴击"},
|
||||
|
||||
// 后勤保障 - 萧何专属 | 每6级 | 生命回复+3点
|
||||
7006: {uuid: 7006, name: "后勤保障", desc: "每升6级,生命回复增加3点", type: TalType.LEVEL_UP, triggerType: TalEType.ATTRS,
|
||||
chance: 100, t_value: 6, e_value: 3, e_name: Attrs.HP_REGEN, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 8},
|
||||
|
||||
// 离骚诗韵 - 屈原专属 | 每8次攻击 | 火焰伤害+2%
|
||||
7101: {uuid: 7101, name: "离骚诗韵", desc: "每攻击8次,触发火焰buff,火焰山航海加成增加2%,持续10秒", type: TalType.ACTION_COUNT, triggerType: TalEType.SKILL,
|
||||
chance: 100, t_value: 8, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 15},
|
||||
|
||||
// ========== 初始触发类天赋 ==========
|
||||
// 霸王之威 - 项羽专属 | 初始 | 生命值+100
|
||||
7201: {uuid: 7201, name: "霸王之威", desc: "初始获得额外100点生命值", type: TalType.INIT, triggerType: TalEType.ATTRS,
|
||||
chance: 100, t_value: 1, e_value: 100, e_name: Attrs.HP_MAX, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: false},
|
||||
// 兵圣之道 - 孙武专属 | 初始 | 额外技能
|
||||
7202: {uuid: 7202, name: "兵圣之道", desc: "初始获得额外一个技能", type: TalType.INIT, triggerType: TalEType.SKILL_MORE,
|
||||
chance: 100, t_value: 1, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: false},
|
||||
|
||||
// ========== 受伤触发类天赋 ==========
|
||||
// 坚韧意志 - 通用 | 每3次受伤 | 防御力+2点
|
||||
7301: {uuid: 7301, name: "坚韧意志", desc: "每受伤3次,50%纪律,触发[坚韧意志],防御力增加2点,持续10秒", type: TalType.DAMAGE_COUNT, triggerType: TalEType.SKILL,
|
||||
chance: 50, t_value: 3, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 12},
|
||||
// ========== 特定等级触发类天赋 ==========
|
||||
// 坚韧意志 - 通用 | 每3次受伤 | 防御力+2点
|
||||
7401: {uuid: 7401, name: "坚韧意志", desc: "20级是获得[坚韧意志]技能,防御力增加2点,持续10秒", type: TalType.LEVEL, triggerType: TalEType.SKILL_MORE,
|
||||
chance: 100, t_value: 20, e_value: SkillSet[6005].uuid, e_name: 0, e_type: BType.VALUE, e_scaling: 1, e_count: 1, stackable: true, maxStack: 12},
|
||||
/*** 升级触发 ***/
|
||||
7301:{uuid:7301,name:"勤勉",triType:TriType.LUP,Trigger:1,count:5,target:TalTarget.SELF,effet:TalEffet.C_SKILL,vType:BType.VALUE, value:0,attrs:TalAttrs.NON,
|
||||
desc:"每升1级,获得下5次技能暴击"},
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { v3 } from "cc"
|
||||
import { FacSet } from "./GameSet"
|
||||
import { BoxSet, FacSet } from "./GameSet"
|
||||
import { smc } from "../SingletonModuleComp"
|
||||
import { BuffConf } from "./SkillSet"
|
||||
|
||||
@@ -46,23 +46,23 @@ export const getMonList = ()=>{
|
||||
}
|
||||
|
||||
export const HeroPos={
|
||||
0:{pos:v3(-240,120,0)},
|
||||
1:{pos:v3(0,120,0)},
|
||||
2:{pos:v3(0,120,0)},
|
||||
0:{pos:v3(-240,BoxSet.GAME_LINE,0)},
|
||||
1:{pos:v3(0,BoxSet.GAME_LINE,0)},
|
||||
2:{pos:v3(0,BoxSet.GAME_LINE,0)},
|
||||
}
|
||||
export const MonSet = {
|
||||
0:{pos:v3(240,130,0)},
|
||||
1:{pos:v3(240,110,0)},
|
||||
2:{pos:v3(300,130,0)},
|
||||
3:{pos:v3(300,110,0)},
|
||||
4:{pos:v3(320,130,0)},
|
||||
5:{pos:v3(320,110,0)},
|
||||
6:{pos:v3(360,130,0)},
|
||||
7:{pos:v3(360,110,0)},
|
||||
8:{pos:v3(400,130,0)},
|
||||
9:{pos:v3(400,110,0)},
|
||||
10:{pos:v3(440,130,0)},
|
||||
11:{pos:v3(440,110,0)},
|
||||
0:{pos:v3(240,BoxSet.GAME_LINE+10,0)},
|
||||
1:{pos:v3(240,BoxSet.GAME_LINE-10,0)},
|
||||
2:{pos:v3(300,BoxSet.GAME_LINE+10,0)},
|
||||
3:{pos:v3(300,BoxSet.GAME_LINE-10,0)},
|
||||
4:{pos:v3(320,BoxSet.GAME_LINE+10,0)},
|
||||
5:{pos:v3(320,BoxSet.GAME_LINE-10,0)},
|
||||
6:{pos:v3(360,BoxSet.GAME_LINE+10,0)},
|
||||
7:{pos:v3(360,BoxSet.GAME_LINE-10,0)},
|
||||
8:{pos:v3(400,BoxSet.GAME_LINE+10,0)},
|
||||
9:{pos:v3(400,BoxSet.GAME_LINE-10,0)},
|
||||
10:{pos:v3(440,BoxSet.GAME_LINE+10,0)},
|
||||
11:{pos:v3(440,BoxSet.GAME_LINE-10,0)},
|
||||
}
|
||||
|
||||
export enum MonStart {
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
import { _decorator, Animation, AnimationState, CCClass, Component, } from "cc";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
import { FlashSprite } from "./hit-flash-white/scripts/FlashSprite";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('HeroAnmComp')
|
||||
export default class HeroAnmComp extends Component{
|
||||
|
||||
fsSprite:FlashSprite = null!;
|
||||
private anmcon:any=null
|
||||
private _hasStop = true;
|
||||
private default_anim:string='Idle'
|
||||
anms:any[]=["idle","move","stun","dead","buff","atk0","atk1","atk2","max0","max1"]
|
||||
onLoad () {
|
||||
this.anmcon=this.node.getComponent(Animation)
|
||||
this.fsSprite = this.node.getComponent(FlashSprite);
|
||||
this.anmcon.on(Animation.EventType.FINISHED, this.onAnimationFinished, this);
|
||||
}
|
||||
|
||||
@@ -25,6 +27,9 @@ export default class HeroAnmComp extends Component{
|
||||
this.anmcon.play(this.default_anim)
|
||||
}
|
||||
}
|
||||
atked(){
|
||||
this.fsSprite.clickFlash();
|
||||
}
|
||||
move () {
|
||||
if(this.anmcon.getState("move").isPlaying) return
|
||||
this.anmcon.play("move")
|
||||
|
||||
@@ -1,306 +0,0 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
import { Attrs } from "../common/config/HeroAttrs";
|
||||
import { FightSet } from "../common/config/GameSet";
|
||||
import { SkillSet } from "../common/config/SkillSet";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { DamageQueueComp, DamageEvent, DamageQueueHelper } from "./DamageQueueComp";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
|
||||
/** 业务层对象 */
|
||||
@ecs.register('HeroAtk')
|
||||
export class HeroAtkComp extends ecs.Comp {
|
||||
/** 业务层组件移除时,重置所有数据为默认值 */
|
||||
reset() {
|
||||
|
||||
}
|
||||
}
|
||||
/** 最终伤害数据接口 */
|
||||
interface FinalData {
|
||||
damage: number;
|
||||
isCrit: boolean;
|
||||
isDodge: boolean;
|
||||
}
|
||||
/** 业务层业务逻辑处理对象 伤害处理系统 */
|
||||
@ecs.register('HeroAtkSystem')
|
||||
export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate {
|
||||
|
||||
private debugMode: boolean = false; // 是否启用调试模式
|
||||
|
||||
/**
|
||||
* 过滤器:处理拥有伤害队列的实体
|
||||
*/
|
||||
filter(): ecs.IMatcher {
|
||||
return ecs.allOf(HeroAttrsComp, DamageQueueComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统更新(每帧调用)
|
||||
* 处理伤害队列中的所有伤害事件
|
||||
*/
|
||||
update(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
const damageQueue = e.get(DamageQueueComp);
|
||||
|
||||
if (!model || !damageQueue || damageQueue.isEmpty()) return;
|
||||
|
||||
// 标记正在处理
|
||||
damageQueue.isProcessing = true;
|
||||
|
||||
// 处理队列中的所有伤害事件
|
||||
let processedCount = 0;
|
||||
while (!damageQueue.isEmpty()) {
|
||||
const damageEvent = damageQueue.getNextDamageEvent();
|
||||
if (!damageEvent) break;
|
||||
|
||||
// 处理单个伤害事件
|
||||
const FDData = this.doAttack(e, damageEvent);
|
||||
processedCount++;
|
||||
damageQueue.processedCount++;
|
||||
|
||||
if (this.debugMode) {
|
||||
const casterName = damageEvent.caster?.ent?.get(HeroAttrsComp)?.hero_name || "未知";
|
||||
const casterUuid = damageEvent.caster?.ent?.get(HeroAttrsComp)?.hero_uuid || 0;
|
||||
console.log(`[HeroAtkSystem] 英雄${model.hero_name} (uuid: ${model.hero_uuid}) 受到 ${casterName}(uuid: ${casterUuid})的 伤害 ${FDData.damage},${FDData.isCrit?"暴击":"普通"}攻击,技能ID ${damageEvent.s_uuid}`);
|
||||
}
|
||||
|
||||
// 如果目标已死亡,停止处理后续伤害
|
||||
if (model.is_dead) {
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroAtkSystem] ${model.hero_name} 已死亡,停止处理剩余伤害`);
|
||||
}
|
||||
damageQueue.clear(); // 清空剩余伤害
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果队列已空,移除伤害队列组件
|
||||
if (damageQueue.isEmpty()) {
|
||||
e.remove(DamageQueueComp);
|
||||
|
||||
if (this.debugMode && processedCount > 0) {
|
||||
console.log(`[HeroAtkSystem] ${model.hero_name} 伤害队列处理完成,共处理 ${processedCount} 个伤害事件`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 执行攻击计算
|
||||
* @param target 目标实体
|
||||
* @param damageEvent 伤害事件数据
|
||||
* @returns 最终伤害数据
|
||||
*/
|
||||
private doAttack(target: ecs.Entity, damageEvent: DamageEvent): FinalData {
|
||||
const targetModel = target.get(HeroAttrsComp);
|
||||
const targetView = target.get(HeroViewComp);
|
||||
let reDate:FinalData={
|
||||
damage:0,
|
||||
isCrit:false,
|
||||
isDodge:false,
|
||||
}
|
||||
if (!targetModel || targetModel.is_dead) return reDate;
|
||||
|
||||
// 获取攻击者数据
|
||||
const caster = damageEvent.caster;
|
||||
const casterModel = caster.ent.get(HeroAttrsComp);
|
||||
if (!casterModel) return reDate;
|
||||
|
||||
// 获取技能配置
|
||||
const skillConf = SkillSet[damageEvent.s_uuid];
|
||||
if (!skillConf) return reDate;
|
||||
|
||||
// 触发被攻击事件
|
||||
this.onAttacked(target);
|
||||
|
||||
// 闪避判定
|
||||
if (this.checkDodge(targetModel)) {
|
||||
// TODO: 触发闪避视图表现
|
||||
reDate.isDodge=true;
|
||||
return reDate;
|
||||
}
|
||||
|
||||
// 暴击判定
|
||||
const isCrit = this.checkCrit(targetModel.Attrs[Attrs.CRITICAL]);
|
||||
let damage = this.dmgCount(damageEvent.Attrs,damageEvent.s_uuid);
|
||||
if (isCrit) {
|
||||
damage = Math.floor(damage * (1 + (FightSet.CRIT_DAMAGE + targetModel.Attrs[Attrs.CRITICAL_DMG]) / 100));
|
||||
reDate.isCrit=true;
|
||||
}
|
||||
|
||||
// 伤害计算(考虑易伤等debuff)
|
||||
damage = this.calculateDamage(targetModel, damage);
|
||||
|
||||
// 护盾吸收
|
||||
damage =Math.floor(this.absorbShield(targetModel, damage))
|
||||
if (damage <= 0) return reDate;
|
||||
|
||||
// 应用伤害到数据层
|
||||
targetModel.hp -= damage;
|
||||
targetModel.atked_count++;
|
||||
|
||||
// ✅ 触发视图层表现(伤害数字、受击动画、后退)
|
||||
if (targetView) {
|
||||
targetView.do_atked(damage, isCrit, damageEvent.s_uuid);
|
||||
}
|
||||
|
||||
// 检查死亡
|
||||
if (targetModel.hp <= 0) {
|
||||
this.doDead(target);
|
||||
// ✅ 触发死亡视图表现
|
||||
if (targetView) {
|
||||
targetView.do_dead();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroAtkSystem] ${targetModel.hero_name} 受到 ${damage} 点伤害 (暴击: ${isCrit})`);
|
||||
}
|
||||
|
||||
reDate.damage=damage;
|
||||
return reDate;
|
||||
}
|
||||
//伤害计算,暂时简单计算
|
||||
private dmgCount(CAttrs:any,s_uuid:number){
|
||||
let sConf = SkillSet[s_uuid];
|
||||
if (!sConf) return 0;
|
||||
let AP = sConf.ap*CAttrs[Attrs.AP]/100;
|
||||
return AP;
|
||||
}
|
||||
/**
|
||||
* 处理角色死亡
|
||||
*/
|
||||
private doDead(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
model.is_dead = true;
|
||||
|
||||
// 触发死亡事件
|
||||
this.onDeath(entity);
|
||||
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroBattleSystem] ${model.hero_name} 死亡`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 闪避判定
|
||||
*/
|
||||
private checkDodge(model: HeroAttrsComp): boolean {
|
||||
if (model.Attrs[Attrs.DODGE] > 0) {
|
||||
const random = Math.random() * 100;
|
||||
if (random < model.Attrs[Attrs.DODGE]) {
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroBattleSystem] ${model.hero_name} 闪避了攻击`);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 暴击判定
|
||||
*/
|
||||
private checkCrit(critRate: number): boolean {
|
||||
if (critRate > 0) {
|
||||
const random = Math.random() * 100;
|
||||
return random < critRate;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 伤害计算(考虑易伤等debuff)
|
||||
*/
|
||||
private calculateDamage(model: HeroAttrsComp, baseDamage: number): number {
|
||||
// 这里可以添加易伤等debuff的计算逻辑
|
||||
// 例如:如果目标有易伤buff,增加受到的伤害
|
||||
return baseDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 护盾吸收伤害
|
||||
*/
|
||||
private absorbShield(model: HeroAttrsComp, damage: number): number {
|
||||
if (model.shield <= 0) return damage;
|
||||
|
||||
if (model.shield >= damage) {
|
||||
model.shield -= damage;
|
||||
if (model.shield <= 0) {
|
||||
model.shield = 0;
|
||||
model.Attrs[Attrs.SHIELD_MAX] = 0;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
const remainingDamage = damage - model.shield;
|
||||
model.shield = 0;
|
||||
model.Attrs[Attrs.SHIELD_MAX] = 0;
|
||||
return remainingDamage;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 被攻击时触发的事件
|
||||
*/
|
||||
private onAttacked(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
// 这里可以添加被攻击时的特殊处理逻辑
|
||||
if (model.fac === FacSet.MON) return;
|
||||
|
||||
// 例如:触发某些天赋效果、反击逻辑等
|
||||
}
|
||||
|
||||
/**
|
||||
* 死亡时触发的事件
|
||||
*/
|
||||
private onDeath(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model) return;
|
||||
|
||||
if (model.fac === FacSet.MON) {
|
||||
// 怪物死亡处理
|
||||
this.scheduleDrop(entity);
|
||||
} else if (model.fac === FacSet.HERO) {
|
||||
// 英雄死亡处理
|
||||
this.scheduleHeroDeath(entity);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟执行掉落逻辑
|
||||
*/
|
||||
private scheduleDrop(entity: ecs.Entity): void {
|
||||
// 这里可以添加掉落逻辑
|
||||
// 例如:延迟一段时间后生成掉落物品
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟执行英雄死亡逻辑
|
||||
*/
|
||||
private scheduleHeroDeath(entity: ecs.Entity): void {
|
||||
// 这里可以添加英雄死亡的特殊处理
|
||||
// 例如:触发游戏结束、复活机制等
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用调试模式
|
||||
*/
|
||||
enableDebug() {
|
||||
this.debugMode = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用调试模式
|
||||
*/
|
||||
disableDebug() {
|
||||
this.debugMode = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
542
assets/script/game/hero/HeroAtkSystem.ts
Normal file
542
assets/script/game/hero/HeroAtkSystem.ts
Normal file
@@ -0,0 +1,542 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
import { Attrs } from "../common/config/HeroAttrs";
|
||||
import { FightSet } from "../common/config/GameSet";
|
||||
import { SkillSet, DType } from "../common/config/SkillSet";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { DamageQueueComp, DamageEvent, DamageQueueHelper } from "./DamageQueueComp";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
|
||||
|
||||
/** 最终伤害数据接口
|
||||
* 用于封装一次攻击计算的所有结果数据
|
||||
* @property damage - 最终造成的伤害值(已考虑所有加成和减免)
|
||||
* @property isCrit - 是否为暴击攻击
|
||||
* @property isDodge - 是否被闪避(闪避时damage为0)
|
||||
*/
|
||||
interface FinalData {
|
||||
damage: number;
|
||||
isCrit: boolean;
|
||||
isDodge: boolean;
|
||||
}
|
||||
/**
|
||||
* 英雄攻击系统 - 伤害处理核心系统
|
||||
*
|
||||
* 职责:
|
||||
* 1. 处理所有伤害事件的计算和分发
|
||||
* 2. 管理伤害队列的处理流程
|
||||
* 3. 协调视图层的表现更新
|
||||
*
|
||||
* 重要概念:
|
||||
* - damageEvent.Attrs: 施法者属性快照(创建技能时保存)
|
||||
* - targetAttrs: 被攻击者实时属性
|
||||
* - 属性来源规范:攻击判定用施法者,防御判定用被攻击者
|
||||
*/
|
||||
@ecs.register('HeroAtkSystem')
|
||||
export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate {
|
||||
|
||||
private debugMode: boolean = false; // 是否启用调试模式
|
||||
|
||||
/**
|
||||
* 过滤器:处理拥有伤害队列的实体
|
||||
*/
|
||||
filter(): ecs.IMatcher {
|
||||
return ecs.allOf(HeroAttrsComp, DamageQueueComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统更新(每帧调用)
|
||||
* 处理伤害队列中的所有伤害事件
|
||||
*/
|
||||
update(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
const damageQueue = e.get(DamageQueueComp);
|
||||
|
||||
if (!model || !damageQueue || damageQueue.isEmpty()) return;
|
||||
|
||||
// 标记正在处理
|
||||
damageQueue.isProcessing = true;
|
||||
|
||||
// 处理队列中的所有伤害事件
|
||||
let processedCount = 0;
|
||||
while (!damageQueue.isEmpty()) {
|
||||
const damageEvent = damageQueue.getNextDamageEvent();
|
||||
if (!damageEvent) break;
|
||||
|
||||
// 处理单个伤害事件
|
||||
const FDData = this.doAttack(e, damageEvent);
|
||||
processedCount++;
|
||||
damageQueue.processedCount++;
|
||||
|
||||
if (this.debugMode) {
|
||||
const casterName = damageEvent.caster?.ent?.get(HeroAttrsComp)?.hero_name || "未知";
|
||||
const casterUuid = damageEvent.caster?.ent?.get(HeroAttrsComp)?.hero_uuid || 0;
|
||||
console.log(`[HeroAtkSystem] 英雄${model.hero_name} (uuid: ${model.hero_uuid}) 受到 ${casterName}(uuid: ${casterUuid})的 伤害 ${FDData.damage},${FDData.isCrit?"暴击":"普通"}攻击,技能ID ${damageEvent.s_uuid}`);
|
||||
}
|
||||
|
||||
// 如果目标已死亡,停止处理后续伤害
|
||||
if (model.is_dead) {
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroAtkSystem] ${model.hero_name} 已死亡,停止处理剩余伤害`);
|
||||
}
|
||||
damageQueue.clear(); // 清空剩余伤害
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果队列已空,移除伤害队列组件
|
||||
if (damageQueue.isEmpty()) {
|
||||
e.remove(DamageQueueComp);
|
||||
|
||||
if (this.debugMode && processedCount > 0) {
|
||||
console.log(`[HeroAtkSystem] ${model.hero_name} 伤害队列处理完成,共处理 ${processedCount} 个伤害事件`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 执行攻击计算 - 核心伤害计算逻辑
|
||||
*
|
||||
* 属性使用规范(重要!):
|
||||
*
|
||||
* ✅ 正确使用施法者属性(damageEvent.Attrs - 快照):
|
||||
* - CRITICAL: 暴击率判定
|
||||
* - CRITICAL_DMG: 暴击伤害加成
|
||||
* - BACK_CHANCE: 击退概率
|
||||
* - HIT: 命中率(用于闪避计算)
|
||||
* - AP/MAP: 攻击力(基础伤害计算)
|
||||
*
|
||||
* ✅ 正确使用被攻击者属性(targetAttrs - 实时):
|
||||
* - DODGE: 闪避率(用于闪避计算)
|
||||
* - SHIELD_MAX: 护盾最大值(护盾吸收)
|
||||
* - hp: 当前生命值(伤害应用)
|
||||
* - 各种抗性属性(预留扩展)
|
||||
*
|
||||
* ❌ 错误使用案例(已修复):
|
||||
* - 不要混用施法者和被攻击者的属性进行同一计算
|
||||
* - 暴击伤害应该基于施法者的暴击伤害属性
|
||||
*
|
||||
* @param target 目标实体(被攻击者)
|
||||
* @param damageEvent 伤害事件数据(包含施法者信息和属性快照)
|
||||
* @returns 最终伤害数据(包含伤害值、暴击标记、闪避标记)
|
||||
*/
|
||||
private doAttack(target: ecs.Entity, damageEvent: DamageEvent): FinalData {
|
||||
const targetAttrs = target.get(HeroAttrsComp);
|
||||
const targetView = target.get(HeroViewComp);
|
||||
let reDate:FinalData={
|
||||
damage:0,
|
||||
isCrit:false,
|
||||
isDodge:false,
|
||||
}
|
||||
if (!targetAttrs || targetAttrs.is_dead) return reDate;
|
||||
|
||||
const caster = damageEvent.caster;
|
||||
const attackerModel = caster?.ent?.get(HeroAttrsComp);
|
||||
|
||||
// 获取技能配置
|
||||
const skillConf = SkillSet[damageEvent.s_uuid];
|
||||
if (!skillConf) return reDate;
|
||||
|
||||
// 触发被攻击事件
|
||||
this.onAttacked(target);
|
||||
|
||||
// 闪避判定
|
||||
// 闪避成功概率 = 被攻击者闪避率 - 施法者命中率
|
||||
// targetAttrs.Attrs[Attrs.DODGE]: 被攻击者的实时闪避属性
|
||||
// damageEvent.Attrs[Attrs.HIT]: 施法者在技能创建时的命中属性快照
|
||||
const isDodge =this.checkChance((targetAttrs.Attrs[Attrs.DODGE]-damageEvent.Attrs[Attrs.HIT]) || 0);
|
||||
if (isDodge) {
|
||||
// TODO: 触发闪避视图表现
|
||||
reDate.isDodge=true;
|
||||
return reDate;
|
||||
}
|
||||
// 暴击判定
|
||||
// 使用施法者的暴击率属性(damageEvent.Attrs 快照)
|
||||
const isCrit = this.checkChance(damageEvent.Attrs[Attrs.CRITICAL]);
|
||||
if (isCrit) attackerModel?.useValueTalByAttr(Attrs.CRITICAL); // 清除施法者的暴击buff
|
||||
// 计算伤害
|
||||
let damage = this.dmgCount(damageEvent,targetAttrs.Attrs);
|
||||
if (isCrit) {
|
||||
// 暴击伤害计算
|
||||
// 使用施法者的暴击伤害加成属性(damageEvent.Attrs 快照)
|
||||
// 公式:最终伤害 = 基础伤害 * (1 + 系统暴击倍率 + 施法者暴击伤害加成)
|
||||
const casterCritDmg = damageEvent.Attrs[Attrs.CRITICAL_DMG] || 0;
|
||||
damage = Math.floor(damage * (1 + (FightSet.CRIT_DAMAGE + casterCritDmg) / 100));
|
||||
reDate.isCrit=true;
|
||||
}
|
||||
// 伤害计算(考虑易伤等debuff)
|
||||
damage = this.calculateDamage(targetAttrs, damage);
|
||||
// 护盾吸收
|
||||
damage =Math.floor(this.absorbShield(targetAttrs, damage))
|
||||
if (damage <= 0) return reDate;
|
||||
// 应用伤害到数据层
|
||||
targetAttrs.hp -= damage;
|
||||
targetAttrs.atked_count++;
|
||||
// 击退判定
|
||||
// 使用施法者的击退概率属性(damageEvent.Attrs 快照)
|
||||
// 击退成功后需要清理施法者的相关天赋buff
|
||||
const isBack = this.checkChance(damageEvent.Attrs[Attrs.BACK_CHANCE] || 0);
|
||||
if (isBack) attackerModel?.useValueTalByAttr(Attrs.BACK_CHANCE);
|
||||
|
||||
|
||||
// ✅ 触发视图层表现(伤害数字、受击动画、后退)
|
||||
if (targetView) targetView.do_atked(damage, isCrit, damageEvent.s_uuid, isBack);
|
||||
|
||||
|
||||
// 检查死亡
|
||||
if (targetAttrs.hp <= 0) {
|
||||
this.doDead(target);
|
||||
// ✅ 触发死亡视图表现
|
||||
if (targetView) {
|
||||
targetView.do_dead();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroAtkSystem] ${targetAttrs.hero_name} 受到 ${damage} 点伤害 (暴击: ${isCrit})`);
|
||||
}
|
||||
|
||||
reDate.damage=damage;
|
||||
return reDate;
|
||||
}
|
||||
/**
|
||||
* 详细伤害计算核心方法
|
||||
*
|
||||
* 这是整个战斗系统中最核心的伤害计算方法,负责根据施法者属性、目标属性和技能配置
|
||||
* 计算最终的基础伤害值。该方法采用多阶段的伤害计算公式,综合考虑了物理和魔法伤害
|
||||
* 以及各种属性加成和抗性减免。
|
||||
*
|
||||
* 计算流程:
|
||||
* 1. 获取技能配置
|
||||
* 2. 计算原始物理伤害和魔法伤害
|
||||
* 3. 应用防御减免
|
||||
* 4. 应用物理/魔法攻击力和抗性修正
|
||||
* 5. 应用元素属性加成和抗性修正
|
||||
* 6. 应用最终伤害减免
|
||||
* 7. 确保伤害值非负
|
||||
*
|
||||
* @param CAttrs 施法者属性快照对象,包含所有攻击力、属性加成等战斗属性
|
||||
* @param TAttrs 目标属性对象,包含所有防御力、抗性等防御属性
|
||||
* @param s_uuid 技能ID,用于获取技能配置信息和伤害类型
|
||||
* @returns 经过完整计算后的最终伤害值(未考虑暴击)
|
||||
*
|
||||
* @important 注意事项:
|
||||
* - 此方法计算的是基础伤害,暴击计算在外部处理
|
||||
* - 所有除法和乘法计算后都进行取整操作,确保游戏中的伤害值为整数
|
||||
* - 元素伤害只应用于魔法伤害部分
|
||||
*/
|
||||
private dmgCount(damageEvent:any,TAttrs:any){
|
||||
// 1. 获取技能配置 - 如果技能不存在,直接返回0伤害
|
||||
const CAttrs=damageEvent.Attrs;
|
||||
let sConf = SkillSet[damageEvent.s_uuid];
|
||||
if (!sConf) return 0;
|
||||
|
||||
// 2. 计算原始物理伤害和魔法伤害
|
||||
// 物理伤害基础值 = 技能物理倍率 * (施法者物理攻击力 + 额外物理伤害) / 100 * 伤害比例
|
||||
let apBase = (sConf.ap||0)*(CAttrs[Attrs.AP]+damageEvent.ext_dmg)/100*damageEvent.dmg_ratio;
|
||||
// 魔法伤害基础值 = 技能魔法倍率 * (施法者魔法攻击力 + 额外魔法伤害) / 100 * 伤害比例
|
||||
let mapBase = (sConf.map||0)*(CAttrs[Attrs.MAP]+damageEvent.ext_dmg)/100*damageEvent.dmg_ratio;
|
||||
|
||||
// 3. 获取目标防御属性
|
||||
const def = (TAttrs[Attrs.DEF]||0); // 目标物理防御
|
||||
const mdef = (TAttrs[Attrs.MDEF]||0); // 目标魔法防御
|
||||
|
||||
// 4. 计算防御减免系数(采用公式:防御/(防御+常数),确保防御值不会导致伤害减到0)
|
||||
const apRed = def / (def + FightSet.DEF_C); // 物理防御减免系数
|
||||
const mapRed = mdef / (mdef + FightSet.MDEF_C); // 魔法防御减免系数
|
||||
|
||||
// 5. 应用防御减免到基础伤害,向下取整
|
||||
let apAfter = Math.floor(apBase * (1 - apRed)); // 物理伤害 - 防御减免
|
||||
let mapAfter = Math.floor(mapBase * (1 - mapRed)); // 魔法伤害 - 防御减免
|
||||
|
||||
// 6. 应用物理/魔法攻击力和抗性修正
|
||||
// 物理伤害修正:基础伤害 * (1 + 物理攻击力加成%) * (1 - 目标物理抗性%)
|
||||
apAfter = this.applyPR(apAfter, CAttrs[Attrs.PHYS_POWER]||0, TAttrs[Attrs.PHYS_RES]||0);
|
||||
// 魔法伤害修正:基础伤害 * (1 + 魔法攻击力加成%) * (1 - 目标魔法抗性%)
|
||||
mapAfter = this.applyPR(mapAfter, CAttrs[Attrs.MAGIC_POWER]||0, TAttrs[Attrs.MAGIC_RES]||0);
|
||||
|
||||
// 7. 根据技能元素类型,应用元素属性加成和抗性修正
|
||||
switch (sConf.DType) {
|
||||
case DType.ICE:
|
||||
// 冰系伤害修正:魔法伤害 * (1 + 冰系攻击力加成%) * (1 - 目标冰系抗性%)
|
||||
mapAfter = this.applyPR(mapAfter, CAttrs[Attrs.ICE_POWER]||0, TAttrs[Attrs.ICE_RES]||0);
|
||||
break;
|
||||
case DType.FIRE:
|
||||
// 火系伤害修正:魔法伤害 * (1 + 火系攻击力加成%) * (1 - 目标火系抗性%)
|
||||
mapAfter = this.applyPR(mapAfter, CAttrs[Attrs.FIRE_POWER]||0, TAttrs[Attrs.FIRE_RES]||0);
|
||||
break;
|
||||
case DType.WIND:
|
||||
// 风系伤害修正:魔法伤害 * (1 + 风系攻击力加成%) * (1 - 目标风系抗性%)
|
||||
mapAfter = this.applyPR(mapAfter, CAttrs[Attrs.WIND_POWER]||0, TAttrs[Attrs.WIND_RES]||0);
|
||||
break;
|
||||
}
|
||||
|
||||
// 8. 计算最终总伤害(物理伤害 + 魔法伤害)
|
||||
let total = apAfter + mapAfter;
|
||||
|
||||
// 9. 应用最终伤害减免效果(如特殊天赋、buff等提供的减免)
|
||||
total = Math.floor(total * (1 - ((TAttrs[Attrs.DAMAGE_REDUCTION]||0)/100)));
|
||||
|
||||
// 10. 确保伤害值非负,返回最终伤害
|
||||
return Math.max(0,total);
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用攻击力加成和抗性减免的通用计算方法
|
||||
*
|
||||
* 这是一个核心的伤害修正计算方法,用于处理各种类型的攻击力加成和抗性减免。
|
||||
* 该方法采用乘法叠加的方式,分别应用攻击者的加成属性和目标的抗性属性。
|
||||
*
|
||||
* 计算公式:
|
||||
* 最终值 = 基础值 × (1 + 攻击力加成% / 100) × (1 - 抗性% / 100)
|
||||
*
|
||||
* 适用场景:
|
||||
* - 物理攻击力加成和物理抗性减免
|
||||
* - 魔法攻击力加成和魔法抗性减免
|
||||
* - 元素攻击力加成和元素抗性减免
|
||||
* - 其他需要同时考虑加成和减免的属性修正
|
||||
*
|
||||
* 计算逻辑说明:
|
||||
* 1. 首先将百分比转换为小数形式(除以100)
|
||||
* 2. 应用攻击者的加成:基础值 × (1 + 加成系数)
|
||||
* 3. 应用目标的抗性:上一步结果 × (1 - 抗性系数)
|
||||
* 4. 向下取整,确保结果为整数
|
||||
*
|
||||
* @param base 基础值(通常是经过防御减免后的伤害值)
|
||||
* @param power 攻击者的攻击力加成值(百分比形式,如50表示50%)
|
||||
* @param res 目标的抗性值(百分比形式,如30表示30%)
|
||||
* @returns 经过攻击力加成和抗性减免后的最终值(向下取整)
|
||||
*
|
||||
* @important 注意事项:
|
||||
* - 当抗性值大于100时,可能导致最终值为负数或零
|
||||
* - 所有计算结果会向下取整,确保游戏中的数值为整数
|
||||
* - 此方法可以被多次调用,以叠加不同类型的加成和减免
|
||||
*/
|
||||
private applyPR(base: number, power: number, res: number): number {
|
||||
// 计算公式:基础值 × (1 + 攻击力加成%) × (1 - 抗性%)
|
||||
// 1. 将百分比转换为小数:power/100 和 res/100
|
||||
// 2. 应用攻击力加成:1 + (power/100)
|
||||
// 3. 应用抗性减免:1 - (res/100)
|
||||
// 4. 最终计算并向下取整
|
||||
return Math.floor(base * (1 + (power/100)) * (1 - (res/100)));
|
||||
}
|
||||
/**
|
||||
* 处理角色死亡
|
||||
*
|
||||
* 死亡处理流程:
|
||||
* 1. 标记死亡状态(is_dead = true)
|
||||
* 2. 触发死亡事件(onDeath)
|
||||
* 3. 记录调试信息(如启用调试模式)
|
||||
*
|
||||
* @param entity 死亡的实体
|
||||
*
|
||||
* @important 死亡状态一旦设置,该实体将不再处理新的伤害事件
|
||||
* 这确保了死亡逻辑的单一性和一致性
|
||||
*/
|
||||
private doDead(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
model.is_dead = true;
|
||||
|
||||
// 触发死亡事件
|
||||
this.onDeath(entity);
|
||||
|
||||
if (this.debugMode) {
|
||||
console.log(`[HeroAtkSystem] ${model.hero_name} 死亡`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 统一概率判定方法
|
||||
*
|
||||
* 用于所有概率相关的判定:
|
||||
* - 暴击率判定
|
||||
* - 闪避率判定
|
||||
* - 击退概率判定
|
||||
* - 其他特殊效果概率
|
||||
*
|
||||
* @param rate 概率值(0-100的百分比)
|
||||
* @returns true-判定成功,false-判定失败
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* // 10%概率触发
|
||||
* if (this.checkChance(10)) {
|
||||
* // 触发特殊效果
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* @important 概率为0或负数时直接返回false,避免不必要的随机数计算
|
||||
*/
|
||||
private checkChance(rate: number): boolean {
|
||||
if (rate <= 0) return false;
|
||||
const r = Math.random() * 100;
|
||||
return r < rate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 伤害计算(考虑易伤等debuff)
|
||||
*
|
||||
* 预留的伤害计算扩展点,用于处理:
|
||||
* - 被攻击者的易伤状态(增加受到伤害)
|
||||
* - 被攻击者的伤害减免状态(减少受到伤害)
|
||||
* - 元素抗性计算
|
||||
* - 真实伤害/魔法伤害/物理伤害的类型区分
|
||||
*
|
||||
* @param model 被攻击者的属性组件(包含抗性、易伤等状态)
|
||||
* @param baseDamage 基础伤害值
|
||||
* @returns 最终伤害值(经过各种加成和减免后的结果)
|
||||
*/
|
||||
private calculateDamage(model: HeroAttrsComp, baseDamage: number): number {
|
||||
// 这里可以添加易伤等debuff的计算逻辑
|
||||
// 例如:如果目标有易伤buff,增加受到的伤害
|
||||
return baseDamage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 护盾吸收伤害
|
||||
*
|
||||
* 护盾吸收逻辑:
|
||||
* 1. 如果护盾值 >= 伤害值:完全吸收,剩余伤害为0
|
||||
* 2. 如果护盾值 < 伤害值:部分吸收,剩余伤害 = 原伤害 - 护盾值
|
||||
* 3. 护盾被击破时,重置护盾最大值属性
|
||||
*
|
||||
* @param model 被攻击者的属性组件(包含当前护盾值)
|
||||
* @param damage 原始伤害值
|
||||
* @returns 剩余伤害值(护盾吸收后的结果)
|
||||
*/
|
||||
private absorbShield(model: HeroAttrsComp, damage: number): number {
|
||||
if (model.shield <= 0) return damage;
|
||||
|
||||
if (model.shield >= damage) {
|
||||
model.shield -= damage;
|
||||
if (model.shield <= 0) {
|
||||
model.shield = 0;
|
||||
model.Attrs[Attrs.SHIELD_MAX] = 0;
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
const remainingDamage = damage - model.shield;
|
||||
model.shield = 0;
|
||||
model.Attrs[Attrs.SHIELD_MAX] = 0;
|
||||
return remainingDamage;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 被攻击时触发的事件
|
||||
*
|
||||
* 预留的扩展点,用于处理被攻击时的特殊逻辑:
|
||||
* - 触发反伤效果(荆棘光环等)
|
||||
* - 触发被攻击天赋(如受击回血、受击反击等)
|
||||
* - 触发特殊状态(如受伤狂暴、受伤护盾等)
|
||||
*
|
||||
* @param entity 被攻击的实体
|
||||
*
|
||||
* @todo 当前对怪物实体直接返回,后续可以根据需求扩展怪物的被攻击逻辑
|
||||
*/
|
||||
private onAttacked(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
// 这里可以添加被攻击时的特殊处理逻辑
|
||||
if (model.fac === FacSet.MON) return;
|
||||
|
||||
// 例如:触发某些天赋效果、反击逻辑等
|
||||
}
|
||||
|
||||
/**
|
||||
* 死亡时触发的事件
|
||||
*
|
||||
* 根据实体阵营类型处理不同的死亡逻辑:
|
||||
*
|
||||
* - FacSet.MON(怪物):触发掉落逻辑
|
||||
* - 延迟执行掉落,避免阻塞主逻辑
|
||||
* - 可以扩展:经验值计算、任务进度等
|
||||
*
|
||||
* - FacSet.HERO(英雄):触发英雄死亡特殊处理
|
||||
* - 游戏结束判定
|
||||
* - 复活机制检查
|
||||
* - 死亡惩罚/奖励
|
||||
*
|
||||
* @param entity 死亡的实体
|
||||
*
|
||||
* @important 死亡事件应该幂等,避免重复触发
|
||||
*/
|
||||
private onDeath(entity: ecs.Entity): void {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model) return;
|
||||
|
||||
if (model.fac === FacSet.MON) {
|
||||
// 怪物死亡处理
|
||||
this.scheduleDrop(entity);
|
||||
} else if (model.fac === FacSet.HERO) {
|
||||
// 英雄死亡处理
|
||||
this.scheduleHeroDeath(entity);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟执行掉落逻辑
|
||||
*
|
||||
* 采用延迟执行的原因:
|
||||
* 1. 避免在伤害计算过程中阻塞主线程
|
||||
* 2. 给死亡动画播放留出时间
|
||||
* 3. 可以批量处理多个掉落,优化性能
|
||||
*
|
||||
* @param entity 死亡的怪物实体
|
||||
*
|
||||
* @todo 具体实现可以包括:
|
||||
* - 根据怪物等级计算基础掉落
|
||||
* - 幸运值影响掉落品质
|
||||
* - 特殊事件(双倍掉落、稀有掉落等)
|
||||
* - 掉落物在场景中的生成位置计算
|
||||
*/
|
||||
private scheduleDrop(entity: ecs.Entity): void {
|
||||
// 这里可以添加掉落逻辑
|
||||
// 例如:延迟一段时间后生成掉落物品
|
||||
}
|
||||
|
||||
/**
|
||||
* 延迟执行英雄死亡逻辑
|
||||
*
|
||||
* 英雄死亡的特殊处理,比普通怪物复杂:
|
||||
*
|
||||
* 处理内容包括:
|
||||
* - 检查复活次数和复活条件
|
||||
* - 触发游戏结束界面(如适用)
|
||||
* - 记录死亡统计信息
|
||||
* - 处理死亡惩罚(经验损失、装备损坏等)
|
||||
*
|
||||
* @param entity 死亡的英雄实体
|
||||
*
|
||||
* @important 英雄死亡通常需要玩家交互,所以必须延迟处理
|
||||
* 给玩家足够的反馈时间和操作空间
|
||||
*/
|
||||
private scheduleHeroDeath(entity: ecs.Entity): void {
|
||||
// 这里可以添加英雄死亡的特殊处理
|
||||
// 例如:触发游戏结束、复活机制等
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用调试模式
|
||||
*/
|
||||
enableDebug() {
|
||||
this.debugMode = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用调试模式
|
||||
*/
|
||||
disableDebug() {
|
||||
this.debugMode = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "85d8a2e5-f2a1-49b0-9439-fe9e1e98b7d9",
|
||||
"uuid": "bffb52f1-1843-437d-82ef-88d2d7ee2ec5",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
@@ -1,12 +1,14 @@
|
||||
import { Timer } from "db://oops-framework/core/common/timer/Timer";
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { Attrs, AttrsType, BType, NeAttrs } from "../common/config/HeroAttrs";
|
||||
import { BuffConf, SkillSet } from "../common/config/SkillSet";
|
||||
import { HeroInfo, AttrSet, HeroUpSet } from "../common/config/heroSet";
|
||||
import { BuffConf } from "../common/config/SkillSet";
|
||||
import { HeroInfo, AttrSet } from "../common/config/heroSet";
|
||||
import { HeroSkillsComp } from "./HeroSkills";
|
||||
|
||||
|
||||
|
||||
interface talTrigger{
|
||||
value:number
|
||||
count:number
|
||||
}
|
||||
@ecs.register('HeroAttrs')
|
||||
export class HeroAttrsComp extends ecs.Comp {
|
||||
Ebus:any=null!
|
||||
@@ -33,6 +35,10 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
shield: number = 0; // 当前护盾
|
||||
Attrs: any = []; // 最终属性数组(经过Buff计算后)
|
||||
NeAttrs: any = []; // 负面状态数组
|
||||
//计数型天赋buff
|
||||
Talents: Record<number, talTrigger> = {};
|
||||
//数值型天赋buff
|
||||
BUFFS_TAL: Record<number, {count:number,BType:BType,attrIndex:number,value: number}> = {};
|
||||
|
||||
// ==================== 技能距离缓存 ====================
|
||||
maxSkillDistance: number = 0; // 最远技能攻击距离(缓存,受MP影响)
|
||||
@@ -45,6 +51,7 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
/** 临时型buff数组 - 按时间自动过期 */
|
||||
BUFFS_TEMP: Record<number, Array<{value: number, BType: BType, remainTime: number}>> = {};
|
||||
|
||||
|
||||
// ==================== 标记状态 ====================
|
||||
is_dead: boolean = false;
|
||||
is_count_dead: boolean = false;
|
||||
@@ -72,6 +79,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
// 清空现有 buff/debuff
|
||||
this.BUFFS = {};
|
||||
this.BUFFS_TEMP = {};
|
||||
this.BUFFS_TAL = {};
|
||||
this.Talents = {};
|
||||
|
||||
// 获取英雄配置
|
||||
const heroInfo = HeroInfo[this.hero_uuid];
|
||||
@@ -179,6 +188,12 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const key in this.BUFFS_TAL) {
|
||||
const buff = this.BUFFS_TAL[Number(key)];
|
||||
if (buff.attrIndex === attrIndex && buff.BType === BType.VALUE) {
|
||||
totalValue += buff.value;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 收集所有百分比型 buff/debuff
|
||||
let totalRatio = 0;
|
||||
@@ -199,6 +214,12 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const key in this.BUFFS_TAL) {
|
||||
const buff = this.BUFFS_TAL[Number(key)];
|
||||
if (buff.attrIndex === attrIndex && buff.BType === BType.RATIO) {
|
||||
totalRatio += buff.value;
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 根据属性类型计算最终值
|
||||
const attrType = AttrsType[attrIndex];
|
||||
@@ -388,7 +409,55 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
}
|
||||
|
||||
|
||||
addValueTal(t_uuid: number, attrIndex?: number, bType?: BType, value: number = 0) {
|
||||
if (attrIndex === undefined || bType === undefined) return;
|
||||
const buff = this.BUFFS_TAL[t_uuid];
|
||||
if (!buff) {
|
||||
this.BUFFS_TAL[t_uuid] = { count: 1, BType: bType, attrIndex, value };
|
||||
} else {
|
||||
buff.count += 1;
|
||||
buff.value += value;
|
||||
}
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
addCountTal(eff: number, value: number) {
|
||||
const t = this.Talents[eff] || { value: 0, count: 0 };
|
||||
t.value = value;
|
||||
t.count += 1;
|
||||
this.Talents[eff] = t;
|
||||
}
|
||||
|
||||
useCountTal(eff: number): boolean {
|
||||
const t = this.Talents[eff];
|
||||
if (!t || t.count <= 0) return false;
|
||||
t.count -= 1;
|
||||
return true;
|
||||
}
|
||||
useCountValTal(eff: number): number {
|
||||
const t = this.Talents[eff];
|
||||
if (!t || t.value <= 0) return 0;
|
||||
t.count -= 1;
|
||||
return t.value;
|
||||
}
|
||||
useValueTalByUuid(t_uuid: number) {
|
||||
const buff = this.BUFFS_TAL[t_uuid];
|
||||
if (!buff) return;
|
||||
const attrIndex = buff.attrIndex;
|
||||
delete this.BUFFS_TAL[t_uuid];
|
||||
this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
useValueTalByAttr(attrIndex: number) {
|
||||
let changed = false;
|
||||
for (const key in this.BUFFS_TAL) {
|
||||
const b = this.BUFFS_TAL[Number(key)];
|
||||
if (b && b.attrIndex === attrIndex) {
|
||||
delete this.BUFFS_TAL[Number(key)];
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
if (changed) this.recalculateSingleAttr(attrIndex);
|
||||
}
|
||||
|
||||
reset() {
|
||||
// 重置为初始状态
|
||||
this.hero_uuid = 1001;
|
||||
@@ -410,6 +479,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.NeAttrs = [];
|
||||
this.BUFFS = {};
|
||||
this.BUFFS_TEMP = {};
|
||||
this.BUFFS_TAL = {};
|
||||
this.Talents = {};
|
||||
// 重置技能距离缓存
|
||||
this.maxSkillDistance = 0;
|
||||
this.minSkillDistance = 0;
|
||||
@@ -425,126 +496,10 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.atk_count = 0;
|
||||
this.atked_count = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* ==================== 英雄属性更新系统 ====================
|
||||
*
|
||||
* 按照 ECS 设计理念:
|
||||
* - Component(HeroAttrsComp):存储数据
|
||||
* - System(HeroAttrSystem):处理业务逻辑
|
||||
*
|
||||
* 系统职责:
|
||||
* 1. 每帧更新临时 Buff(时间递减,过期移除)
|
||||
* 2. 每帧更新 HP/MP 自然回复
|
||||
* 3. 限制属性值在合理范围内
|
||||
*
|
||||
/**
|
||||
* 使用方式:
|
||||
* 在 RootSystem 中注册此系统,它会自动每帧更新所有拥有 HeroAttrsComp 的实体
|
||||
*/
|
||||
@ecs.register('HeroAttrSystem')
|
||||
export class HeroAttrSystem extends ecs.ComblockSystem
|
||||
implements ecs.ISystemUpdate, ecs.IEntityEnterSystem, ecs.ISystemFirstUpdate {
|
||||
|
||||
// ==================== 调试统计(可选)====================
|
||||
private entityCount: number = 0; // 本帧处理的实体数
|
||||
private frameCount: number = 0; // 总帧数
|
||||
private debugMode: boolean = false; // 是否启用调试模式
|
||||
private timer:Timer=new Timer(1)
|
||||
/**
|
||||
* 过滤器:只处理拥有 HeroAttrsComp 的实体
|
||||
*/
|
||||
filter(): ecs.IMatcher {
|
||||
return ecs.allOf(HeroAttrsComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实体首次进入系统时调用(每个实体只调用一次)
|
||||
*/
|
||||
entityEnter(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
if (!model) return;
|
||||
|
||||
console.log(`[HeroAttrSystem] 英雄进入系统: ${model.hero_name} (uuid: ${model.hero_uuid})`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统首次更新前调用(整个系统只调用一次)
|
||||
*/
|
||||
firstUpdate(): void {
|
||||
console.log("[HeroAttrSystem] 系统首次更新");
|
||||
}
|
||||
|
||||
/**
|
||||
* 每帧更新(为每个英雄调用一次)
|
||||
*
|
||||
* ⭐ 关键理解:
|
||||
* - 如果有 3 个英雄,这个方法每帧会被调用 3 次
|
||||
* - 每次调用处理不同的实体 e
|
||||
* - 这是正确的设计,不是 bug
|
||||
*/
|
||||
update(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
// 统计:记录本帧处理的实体数
|
||||
this.entityCount++;
|
||||
|
||||
// 调试日志(可选,调试时启用)
|
||||
if (this.debugMode) {
|
||||
console.log(` [${this.entityCount}] 更新英雄: ${model.hero_name}, HP: ${model.hp.toFixed(2)}`);
|
||||
}
|
||||
|
||||
// 1. 更新临时 Buff/Debuff(时间递减,过期自动移除)
|
||||
model.updateTemporaryBuffsDebuffs(this.dt);
|
||||
// 记录MP变化前的值
|
||||
const oldMp = model.mp;
|
||||
|
||||
if(this.timer.update(this.dt)){
|
||||
// 2. HP/MP 自然回复(业务规则)
|
||||
model.mp += HeroUpSet.MP
|
||||
model.hp += HeroUpSet.HP
|
||||
}
|
||||
|
||||
// 3. 限制属性值在合理范围内
|
||||
if (model.mp > model.Attrs[Attrs.MP_MAX]) {
|
||||
model.mp = model.Attrs[Attrs.MP_MAX];
|
||||
}
|
||||
if (model.hp > model.Attrs[Attrs.HP_MAX]) {
|
||||
model.hp = model.Attrs[Attrs.HP_MAX];
|
||||
}
|
||||
|
||||
// 4. 如果MP发生变化,更新最大技能距离缓存(最小距离不受MP影响)
|
||||
if (model.mp !== oldMp) {
|
||||
const skillsComp = e.get(HeroSkillsComp);
|
||||
if (skillsComp) {
|
||||
model.updateSkillDistanceCache(skillsComp);
|
||||
}
|
||||
}
|
||||
|
||||
// 每 60 帧输出一次统计
|
||||
this.frameCount++;
|
||||
if (this.frameCount % 60 === 0 && this.entityCount === 1) {
|
||||
console.log(`[HeroAttrSystem] 第 ${this.frameCount} 帧,处理 ${this.entityCount} 个英雄`);
|
||||
}
|
||||
|
||||
// 注意:显示更新由 HeroViewComp 负责,这里只处理数据
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用调试模式(调试时使用)
|
||||
*/
|
||||
enableDebug() {
|
||||
this.debugMode = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用调试模式(正式运行)
|
||||
*/
|
||||
disableDebug() {
|
||||
this.debugMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
128
assets/script/game/hero/HeroAttrsSystem.ts
Normal file
128
assets/script/game/hero/HeroAttrsSystem.ts
Normal file
@@ -0,0 +1,128 @@
|
||||
import { Timer } from "db://oops-framework/core/common/timer/Timer";
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { Attrs } from "../common/config/HeroAttrs";
|
||||
import { HeroUpSet } from "../common/config/heroSet";
|
||||
import { HeroSkillsComp } from "./HeroSkills";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
/**
|
||||
* ==================== 英雄属性更新系统 ====================
|
||||
*
|
||||
* 按照 ECS 设计理念:
|
||||
* - Component(HeroAttrsComp):存储数据
|
||||
* - System(HeroAttrSystem):处理业务逻辑
|
||||
*
|
||||
* 系统职责:
|
||||
* 1. 每帧更新临时 Buff(时间递减,过期移除)
|
||||
* 2. 每帧更新 HP/MP 自然回复
|
||||
* 3. 限制属性值在合理范围内
|
||||
*
|
||||
/**
|
||||
* 使用方式:
|
||||
* 在 RootSystem 中注册此系统,它会自动每帧更新所有拥有 HeroAttrsComp 的实体
|
||||
*/
|
||||
@ecs.register('HeroAttrSystem')
|
||||
export class HeroAttrSystem extends ecs.ComblockSystem
|
||||
implements ecs.ISystemUpdate, ecs.IEntityEnterSystem, ecs.ISystemFirstUpdate {
|
||||
|
||||
// ==================== 调试统计(可选)====================
|
||||
private entityCount: number = 0; // 本帧处理的实体数
|
||||
private frameCount: number = 0; // 总帧数
|
||||
private debugMode: boolean = false; // 是否启用调试模式
|
||||
private timer:Timer=new Timer(1)
|
||||
/**
|
||||
* 过滤器:只处理拥有 HeroAttrsComp 的实体
|
||||
*/
|
||||
filter(): ecs.IMatcher {
|
||||
return ecs.allOf(HeroAttrsComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实体首次进入系统时调用(每个实体只调用一次)
|
||||
*/
|
||||
entityEnter(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
if (!model) return;
|
||||
|
||||
console.log(`[HeroAttrSystem] 英雄进入系统: ${model.hero_name} (uuid: ${model.hero_uuid})`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统首次更新前调用(整个系统只调用一次)
|
||||
*/
|
||||
firstUpdate(): void {
|
||||
console.log("[HeroAttrSystem] 系统首次更新");
|
||||
}
|
||||
|
||||
/**
|
||||
* 每帧更新(为每个英雄调用一次)
|
||||
*
|
||||
* ⭐ 关键理解:
|
||||
* - 如果有 3 个英雄,这个方法每帧会被调用 3 次
|
||||
* - 每次调用处理不同的实体 e
|
||||
* - 这是正确的设计,不是 bug
|
||||
*/
|
||||
update(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const model = e.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead) return;
|
||||
|
||||
// 统计:记录本帧处理的实体数
|
||||
this.entityCount++;
|
||||
|
||||
// 调试日志(可选,调试时启用)
|
||||
if (this.debugMode) {
|
||||
console.log(` [${this.entityCount}] 更新英雄: ${model.hero_name}, HP: ${model.hp.toFixed(2)}`);
|
||||
}
|
||||
|
||||
// 1. 更新临时 Buff/Debuff(时间递减,过期自动移除)
|
||||
model.updateTemporaryBuffsDebuffs(this.dt);
|
||||
// 记录MP变化前的值
|
||||
const oldMp = model.mp;
|
||||
|
||||
if(this.timer.update(this.dt)){
|
||||
// 2. HP/MP 自然回复(业务规则)
|
||||
model.mp += HeroUpSet.MP
|
||||
model.hp += HeroUpSet.HP
|
||||
}
|
||||
|
||||
// 3. 限制属性值在合理范围内
|
||||
if (model.mp > model.Attrs[Attrs.MP_MAX]) {
|
||||
model.mp = model.Attrs[Attrs.MP_MAX];
|
||||
}
|
||||
if (model.hp > model.Attrs[Attrs.HP_MAX]) {
|
||||
model.hp = model.Attrs[Attrs.HP_MAX];
|
||||
}
|
||||
|
||||
// 4. 如果MP发生变化,更新最大技能距离缓存(最小距离不受MP影响)
|
||||
if (model.mp !== oldMp) {
|
||||
const skillsComp = e.get(HeroSkillsComp);
|
||||
if (skillsComp) {
|
||||
model.updateSkillDistanceCache(skillsComp);
|
||||
}
|
||||
}
|
||||
|
||||
// 每 60 帧输出一次统计
|
||||
this.frameCount++;
|
||||
if (this.frameCount % 60 === 0 && this.entityCount === 1) {
|
||||
console.log(`[HeroAttrSystem] 第 ${this.frameCount} 帧,处理 ${this.entityCount} 个英雄`);
|
||||
}
|
||||
|
||||
// 注意:显示更新由 HeroViewComp 负责,这里只处理数据
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用调试模式(调试时使用)
|
||||
*/
|
||||
enableDebug() {
|
||||
this.debugMode = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 禁用调试模式(正式运行)
|
||||
*/
|
||||
disableDebug() {
|
||||
this.debugMode = false;
|
||||
}
|
||||
}
|
||||
1
assets/script/game/hero/HeroAttrsSystem.ts.meta
Normal file
1
assets/script/game/hero/HeroAttrsSystem.ts.meta
Normal file
@@ -0,0 +1 @@
|
||||
{"ver":"4.0.24","importer":"typescript","imported":true,"uuid":"7763ec0e-8d85-4af0-8595-e3b078a128b6","files":[],"subMetas":{},"userData":{}}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { Attrs } from "../common/config/HeroAttrs";
|
||||
import { HeroInfo } from "../common/config/heroSet";
|
||||
import { SkillSet } from "../common/config/SkillSet";
|
||||
import { HSSet, SkillSet } from "../common/config/SkillSet";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
|
||||
/**
|
||||
@@ -15,8 +15,10 @@ export interface SkillSlot {
|
||||
cost: number; // MP消耗
|
||||
level: number; // 技能等级(预留)
|
||||
dis: number; // 攻击距离
|
||||
hset: HSSet; // 技能设定, 0:普通攻击, 1:一般技能, 2:必杀技
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ==================== 英雄技能数据组件 ====================
|
||||
*
|
||||
@@ -36,6 +38,7 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
// ==================== 技能槽位列表 ====================
|
||||
/** 技能槽位数组(最多4个技能) */
|
||||
skills: Record<number, SkillSlot> = {};
|
||||
max_auto: boolean = true;
|
||||
|
||||
// ==================== 辅助方法 ====================
|
||||
|
||||
@@ -56,6 +59,9 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
}
|
||||
// 第0个技能的 cd_max 取 herosinfo[uuid].as
|
||||
const cdMax = i === 0 ? HeroInfo[uuid].as : config.cd;
|
||||
let hset = HSSet.atk;
|
||||
if(i ===1) hset = HSSet.skill;
|
||||
if(i ===2) hset = HSSet.max;
|
||||
this.skills[s_uuid] = {
|
||||
s_uuid: config.uuid,
|
||||
cd: 0,
|
||||
@@ -63,6 +69,7 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
cost: config.cost,
|
||||
level: 1,
|
||||
dis: Number(config.dis),
|
||||
hset: hset,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,7 +87,7 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
* @param s_uuid 技能配置ID
|
||||
* @param entity 实体对象(用于更新技能距离缓存)
|
||||
*/
|
||||
addSkill(s_uuid: number, entity?: ecs.Entity) {
|
||||
addSkill(s_uuid: number, entity?: ecs.Entity, hset: HSSet=HSSet.skill) {
|
||||
const config = SkillSet[s_uuid];
|
||||
if (!config) {
|
||||
console.warn(`[HeroSkills] 技能配置不存在: ${s_uuid}`);
|
||||
@@ -93,6 +100,7 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
cost: config.cost,
|
||||
level: 1,
|
||||
dis: Number(config.dis),
|
||||
hset: hset,
|
||||
};
|
||||
|
||||
// 更新技能距离缓存
|
||||
@@ -263,4 +271,7 @@ export class HeroSkillsComp extends ecs.Comp {
|
||||
reset() {
|
||||
this.skills = {};
|
||||
}
|
||||
setMaxAuto(on: boolean) {
|
||||
this.max_auto = on;
|
||||
}
|
||||
}
|
||||
@@ -66,6 +66,9 @@ export class HeroSpine extends Component {
|
||||
break
|
||||
}
|
||||
}
|
||||
do_atked(){
|
||||
this.anm.atked()
|
||||
}
|
||||
dead(){
|
||||
// console.log("do dead");
|
||||
this.anm.dead()
|
||||
|
||||
@@ -15,6 +15,7 @@ import { timedCom } from "../skill/timedCom";
|
||||
import { HeroInfo, HType } from "../common/config/heroSet";
|
||||
import { Timer } from "db://oops-framework/core/common/timer/Timer";
|
||||
|
||||
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
/** 角色显示组件 */
|
||||
@@ -79,7 +80,7 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
// 初始化 UI 节点
|
||||
this.initUINodes();
|
||||
|
||||
|
||||
/** 方向 */
|
||||
this.node.setScale(this.scale*this.node.scale.x,1*this.node.scale.y);
|
||||
this.top_node.setScale(this.scale*this.top_node.scale.x,1*this.top_node.scale.y);
|
||||
@@ -214,12 +215,13 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
/** 受击特效 */
|
||||
private in_atked(anm: string = "atked", scale: number = 1) {
|
||||
var path = "game/skill/end/" + anm;
|
||||
var prefab: Prefab = oops.res.get(path, Prefab)!;
|
||||
var node = instantiate(prefab);
|
||||
node.setScale(node.scale.x * scale, node.scale.y);
|
||||
node.setPosition(this.node.position.x, this.node.position.y+50, this.node.position.z);
|
||||
node.parent = this.node.parent;
|
||||
this.as.do_atked()
|
||||
// var path = "game/skill/end/" + anm;
|
||||
// var prefab: Prefab = oops.res.get(path, Prefab)!;
|
||||
// var node = instantiate(prefab);
|
||||
// node.setScale(node.scale.x * scale, node.scale.y);
|
||||
// node.setPosition(this.node.position.x, this.node.position.y+50, this.node.position.z);
|
||||
// node.parent = this.node.parent;
|
||||
}
|
||||
|
||||
/** 冰冻特效 */
|
||||
@@ -348,7 +350,7 @@ export class HeroViewComp extends CCComp {
|
||||
this.ent.destroy();
|
||||
|
||||
}
|
||||
do_atked(damage:number,isCrit:boolean,s_uuid:number){
|
||||
do_atked(damage:number,isCrit:boolean,s_uuid:number,isBack:boolean=false){
|
||||
// 受到攻击时显示血条,并设置显示时间(即使伤害为0也显示)
|
||||
this.top_node.active = true;
|
||||
this.hpBarShowCD = this.hpBarShowTime;
|
||||
@@ -357,8 +359,8 @@ export class HeroViewComp extends CCComp {
|
||||
|
||||
// 视图层表现
|
||||
let SConf=SkillSet[s_uuid]
|
||||
this.back()
|
||||
this.showDamage(damage, isCrit, SConf.DAnm); // 暴击状态由战斗系统内部处理, DAnm和EAnm共用设定数组
|
||||
if (isBack) this.back()
|
||||
this.showDamage(damage, isCrit, SConf.DAnm);
|
||||
}
|
||||
|
||||
private isBackingUp: boolean = false; // 🔥 添加后退状态标记
|
||||
|
||||
@@ -2,10 +2,13 @@ import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ec
|
||||
import { Vec3, v3 } from "cc";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { SkillSet, SType } from "../common/config/SkillSet";
|
||||
import { HSSet, SkillSet, SType } from "../common/config/SkillSet";
|
||||
import { HeroSkillsComp, SkillSlot } from "./HeroSkills";
|
||||
import { Skill } from "../skill/Skill";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { TalComp } from "./TalComp";
|
||||
import { TalEffet, TriType } from "../common/config/TalSet";
|
||||
import { BoxSet } from "../common/config/GameSet";
|
||||
|
||||
/**
|
||||
* ==================== 自动施法系统 ====================
|
||||
@@ -50,6 +53,7 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
for (const s_uuid of readySkills) {
|
||||
const skill = skills.getSkill(s_uuid);
|
||||
if (!skill) continue;
|
||||
if (skill.hset === HSSet.max && !skills.max_auto) continue;
|
||||
|
||||
const config = SkillSet[skill.s_uuid];
|
||||
if (!config || config.SType !== SType.damage) continue;
|
||||
@@ -58,26 +62,50 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
if (!this.hasEnemyInSkillRange(heroView, heroAttrs, skill.dis)) continue;
|
||||
|
||||
// ✅ 开始执行施法
|
||||
this.startCast(e,skill);
|
||||
this.startCast(e,skill,skill.hset);
|
||||
|
||||
// 一次只施放一个技能
|
||||
break;
|
||||
}
|
||||
}
|
||||
private startCast(e: ecs.Entity,skill:SkillSlot): void {
|
||||
if (!skill||!e) return
|
||||
private startCast(e: ecs.Entity,skill:SkillSlot,hset:HSSet): boolean {
|
||||
if (!skill||!e) return false
|
||||
const skills = e.get(HeroSkillsComp);
|
||||
const heroAttrs = e.get(HeroAttrsComp);
|
||||
const heroView = e.get(HeroViewComp);
|
||||
// 3. 检查施法条件
|
||||
if (!this.checkCastConditions(skills, heroAttrs, skill.s_uuid)) return
|
||||
if (!this.checkCastConditions(skills, heroAttrs, skill.s_uuid)) return false
|
||||
|
||||
// 4. 执行施法
|
||||
this.executeCast(e, skill.s_uuid, heroView);
|
||||
const castSucess = this.executeCast(e, skill.s_uuid, heroView,hset);
|
||||
// 5. 扣除资源和重置CD
|
||||
heroAttrs.mp -= skill.cost;
|
||||
skills.resetCD(skill.s_uuid);
|
||||
|
||||
if (castSucess) {
|
||||
heroAttrs.mp -= skill.cost;
|
||||
skills.resetCD(skill.s_uuid);
|
||||
}
|
||||
return castSucess;
|
||||
}
|
||||
public manualCast(e: ecs.Entity, s_uuid: number): boolean {
|
||||
if (!e) return false
|
||||
const skills = e.get(HeroSkillsComp)
|
||||
const heroAttrs = e.get(HeroAttrsComp)
|
||||
const heroView = e.get(HeroViewComp)
|
||||
if (!skills || !heroAttrs || !heroView) return false
|
||||
const slot = skills.getSkill(s_uuid)
|
||||
if (!slot) return false
|
||||
return this.startCast(e, slot, slot.hset)
|
||||
}
|
||||
public manualCastMax(e: ecs.Entity): boolean {
|
||||
const skills = e.get(HeroSkillsComp)
|
||||
if (!skills) return false
|
||||
for (const key in skills.skills) {
|
||||
const s_uuid = Number(key)
|
||||
const slot = skills.getSkill(s_uuid)
|
||||
if (slot && slot.hset === HSSet.max) {
|
||||
return this.manualCast(e, s_uuid)
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
/**
|
||||
* 检查施法条件
|
||||
@@ -104,29 +132,89 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
/**
|
||||
* 执行施法
|
||||
*/
|
||||
private executeCast(casterEntity: ecs.Entity, s_uuid: number, heroView: HeroViewComp) {
|
||||
private executeCast(casterEntity: ecs.Entity, s_uuid: number, heroView: HeroViewComp,hset:HSSet): boolean {
|
||||
const heroAttrs=casterEntity.get(HeroAttrsComp)
|
||||
const config = SkillSet[s_uuid];
|
||||
if (!config) {
|
||||
console.error("[SACastSystem] 技能配置不存在:", s_uuid);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1. 播放施法动画
|
||||
heroView.playSkillEffect(s_uuid);
|
||||
/**********************天赋处理*************************************************************************/
|
||||
// 2. 更新攻击类型的天赋触发值,技能和必杀级
|
||||
if(casterEntity.has(TalComp)){
|
||||
const talComp = casterEntity.get(TalComp);
|
||||
if (hset === HSSet.atk) talComp.updateCur(TriType.ATK);
|
||||
if (hset === HSSet.skill) talComp.updateCur(TriType.SKILL);
|
||||
if (hset === HSSet.max) talComp.updateCur(TriType.MAX);
|
||||
}
|
||||
/**********************天赋处理*************************************************************************/
|
||||
// 获取目标位置
|
||||
let targets = this.sTargets(heroView, s_uuid);
|
||||
if (targets.length === 0) {
|
||||
console.warn("[SACastSystem] 没有找到有效目标");
|
||||
return false;
|
||||
}
|
||||
// 2.1 普通攻击逻辑
|
||||
if (hset === HSSet.atk){
|
||||
let delay = 0.3
|
||||
let ext_dmg = heroAttrs.useCountValTal(TalEffet.ATK_DMG);
|
||||
let splash = heroAttrs.useCountValTal(TalEffet.SPLASH);
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView,targets,ext_dmg,splash);
|
||||
}, delay);
|
||||
//风怒wfuny 只针对 普通攻击起效
|
||||
if (heroAttrs.useCountTal(TalEffet.WFUNY)){
|
||||
let ext2_dmg = heroAttrs.useCountValTal(TalEffet.ATK_DMG);
|
||||
let splash2 = heroAttrs.useCountValTal(TalEffet.SPLASH);
|
||||
let delay = 0.3
|
||||
heroView.playSkillEffect(s_uuid);
|
||||
//需要再添加 风怒动画
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView,targets,ext2_dmg,splash2);
|
||||
},delay);
|
||||
}
|
||||
}
|
||||
// 2.2 技能攻击逻辑
|
||||
if(hset === HSSet.skill){
|
||||
let delay = 0.3
|
||||
let ext_dmg = heroAttrs.useCountValTal(TalEffet.SKILL_DMG);
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView,targets,ext_dmg);
|
||||
}, delay);
|
||||
// 双技能 只针对 技能起效
|
||||
if(heroAttrs.useCountTal(TalEffet.D_SKILL)){
|
||||
let ext2_dmg = heroAttrs.useCountValTal(TalEffet.SKILL_DMG);
|
||||
let delay = 0.3
|
||||
heroView.playSkillEffect(s_uuid);
|
||||
//需要再添加 双技能动画
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView,targets,ext2_dmg);
|
||||
},delay);
|
||||
}
|
||||
}
|
||||
// 2.3 必杀技能逻辑
|
||||
if(hset === HSSet.max){
|
||||
let delay = 0.3
|
||||
heroView.playSkillEffect(s_uuid);
|
||||
//需要再添加 最大伤害动画
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView,targets);
|
||||
},delay);
|
||||
}
|
||||
|
||||
|
||||
// 2. 延迟创建技能实体(等待动画)
|
||||
const delay = 0.3
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(s_uuid, heroView);
|
||||
}, delay);
|
||||
|
||||
const heroAttrs = casterEntity.get(HeroAttrsComp);
|
||||
// console.log(`[SACastSystem] ${heroAttrs?.hero_name ?? '未知'} 施放技能: ${config.name}`);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 创建技能实体
|
||||
*/
|
||||
private createSkill(s_uuid: number, caster: HeroViewComp) {
|
||||
private createSkill(s_uuid: number, caster: HeroViewComp,targets:Vec3[]=[],ext_dmg:number=0,splash:number=0) {
|
||||
// 检查节点有效性
|
||||
if (!caster.node || !caster.node.isValid) {
|
||||
console.warn("[SACastSystem] 施法者节点无效");
|
||||
@@ -140,12 +228,7 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取目标位置
|
||||
const targets = this.sTargets(caster);
|
||||
if (targets.length === 0) {
|
||||
console.warn("[SACastSystem] 没有找到有效目标");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 创建技能实体
|
||||
const skill = ecs.getEntity<Skill>(Skill);
|
||||
@@ -156,26 +239,22 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
const targetPos = targets[0]; // 使用第一个目标位置
|
||||
// console.log(`[SACastSystem]: ${s_uuid}, 起始位置: ${startPos}, 目标位置: ${targetPos}`);
|
||||
// 加载技能实体(包括预制体、组件初始化等)
|
||||
skill.load(startPos, parent, s_uuid, targetPos, caster);
|
||||
|
||||
skill.load(startPos, parent, s_uuid, targetPos, caster,ext_dmg,splash);
|
||||
|
||||
}
|
||||
/**
|
||||
* 选择目标位置
|
||||
*/
|
||||
private sTargets(caster: HeroViewComp): Vec3[] {
|
||||
// 简化版:选择最前方的敌人
|
||||
const targets: Vec3[] = [];
|
||||
|
||||
// 这里可以调用 SkillConComp 的目标选择逻辑
|
||||
// 暂时返回默认位置
|
||||
if (caster == null) return targets;
|
||||
if (caster.ent == null) return targets;
|
||||
private sTargets(caster: HeroViewComp, s_uuid: number): Vec3[] {
|
||||
const heroAttrs = caster.ent.get(HeroAttrsComp);
|
||||
const fac = heroAttrs?.fac ?? 0;
|
||||
const defaultX = fac === 0 ? 400 : -400;
|
||||
targets.push(v3(defaultX, 0, 0));
|
||||
|
||||
if (!heroAttrs) return [];
|
||||
const config = SkillSet[s_uuid];
|
||||
if (!config) return this.sDefaultTargets(caster, heroAttrs.fac);
|
||||
const maxTargets = Math.max(1, Number((config as any).t_num ?? 1));
|
||||
const targets = this.sDamageTargets(caster, config, maxTargets);
|
||||
if (targets.length === 0) {
|
||||
targets.push(...this.sDefaultTargets(caster, heroAttrs.fac));
|
||||
}
|
||||
return targets;
|
||||
}
|
||||
|
||||
@@ -187,8 +266,8 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
const heroAttrs = caster.ent.get(HeroAttrsComp);
|
||||
if (!heroAttrs) return targets;
|
||||
|
||||
// 寻找最近的敌人
|
||||
const enemyPositions = this.findNearbyEnemies(caster, heroAttrs.fac, config.range || 300);
|
||||
const range = Number((config as any).range ?? config.dis ?? 300);
|
||||
const enemyPositions = this.findNearbyEnemies(caster, heroAttrs.fac, range);
|
||||
|
||||
// 选择最多maxTargets个目标
|
||||
for (let i = 0; i < Math.min(maxTargets, enemyPositions.length); i++) {
|
||||
@@ -203,82 +282,49 @@ export class SACastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdat
|
||||
return targets;
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择治疗技能目标
|
||||
*/
|
||||
private sHealTargets(caster: HeroViewComp, config: any, maxTargets: number): Vec3[] {
|
||||
const targets: Vec3[] = [];
|
||||
const heroAttrs = caster.ent.get(HeroAttrsComp);
|
||||
if (!heroAttrs) return targets;
|
||||
|
||||
// 寻找血量最低的友军
|
||||
const allyPositions = this.findLowHealthAllies(caster, heroAttrs.fac, config.range || 200);
|
||||
|
||||
for (let i = 0; i < Math.min(maxTargets, allyPositions.length); i++) {
|
||||
targets.push(allyPositions[i]);
|
||||
}
|
||||
|
||||
// 如果没有找到友军,治疗自己
|
||||
if (targets.length === 0 && caster.node) {
|
||||
targets.push(caster.node.position.clone());
|
||||
}
|
||||
|
||||
return targets;
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择BUFF技能目标
|
||||
*/
|
||||
private sBuffTargets(caster: HeroViewComp, config: any, maxTargets: number): Vec3[] {
|
||||
// BUFF技能通常施放在自己或友军身上
|
||||
return this.sHealTargets(caster, config, maxTargets);
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择DEBUFF技能目标
|
||||
*/
|
||||
private sDebuffTargets(caster: HeroViewComp, config: any, maxTargets: number): Vec3[] {
|
||||
// DEBUFF技能通常施放在敌人身上
|
||||
return this.sDamageTargets(caster, config, maxTargets);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 选择默认目标
|
||||
*/
|
||||
private sDefaultTargets(caster: HeroViewComp, faction: number): Vec3[] {
|
||||
private sDefaultTargets(caster: HeroViewComp, fac: number): Vec3[] {
|
||||
const targets: Vec3[] = [];
|
||||
const defaultX = faction === 0 ? 400 : -400;
|
||||
targets.push(v3(defaultX, 0, 0));
|
||||
const defaultX = fac === 0 ? 400 : -400;
|
||||
targets.push(v3(defaultX, BoxSet.GAME_LINE, 1));
|
||||
return targets;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找附近的敌人
|
||||
*/
|
||||
private findNearbyEnemies(caster: HeroViewComp, faction: number, range: number): Vec3[] {
|
||||
// 简化实现,实际应该查询ECS中的敌方实体
|
||||
private findNearbyEnemies(caster: HeroViewComp, fac: number, range: number): Vec3[] {
|
||||
const enemies: Vec3[] = [];
|
||||
|
||||
// 模拟敌人位置
|
||||
const enemyX = faction === 0 ? 300 : -300;
|
||||
enemies.push(v3(enemyX, 0, 0));
|
||||
enemies.push(v3(enemyX + 50, 20, 0));
|
||||
|
||||
if (!caster || !caster.node) return enemies;
|
||||
const currentPos = caster.node.position;
|
||||
const results: { pos: Vec3; dist: number; laneBias: number }[] = [];
|
||||
ecs.query(ecs.allOf(HeroAttrsComp, HeroViewComp)).some(e => {
|
||||
const model = e.get(HeroAttrsComp);
|
||||
const view = e.get(HeroViewComp);
|
||||
if (!model || !view || !view.node) return false;
|
||||
if (model.is_dead) return false;
|
||||
if (model.fac === fac) return false;
|
||||
const pos = view.node.position;
|
||||
const dist = Math.abs(currentPos.x - pos.x);
|
||||
if (dist <= range) {
|
||||
const laneBias = Math.abs(currentPos.y - pos.y);
|
||||
results.push({ pos: pos.clone(), dist, laneBias });
|
||||
}
|
||||
return false;
|
||||
});
|
||||
results.sort((a, b) => {
|
||||
if (a.laneBias !== b.laneBias) return a.laneBias - b.laneBias;
|
||||
return a.dist - b.dist;
|
||||
});
|
||||
for (const r of results) enemies.push(r.pos);
|
||||
return enemies;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找血量低的友军
|
||||
*/
|
||||
private findLowHealthAllies(caster: HeroViewComp, faction: number, range: number): Vec3[] {
|
||||
// 简化实现,实际应该查询ECS中的友方实体并按血量排序
|
||||
const allies: Vec3[] = [];
|
||||
|
||||
// 如果自己血量低,优先治疗自己
|
||||
|
||||
|
||||
return allies;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查技能攻击范围内是否有敌人
|
||||
|
||||
@@ -1,145 +0,0 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { Vec3, v3 } from "cc";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
import { SkillSet, SType } from "../common/config/SkillSet";
|
||||
import { HeroSkillsComp } from "./HeroSkills";
|
||||
import { Skill } from "../skill/Skill";
|
||||
import { CSRequestComp } from "../skill/STagComps";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
|
||||
/**
|
||||
* ==================== 技能施法系统 手动施法====================
|
||||
*
|
||||
* 职责:
|
||||
* 1. 监听 CSRequestComp 标记组件
|
||||
* 2. 检查施法条件(CD、MP、状态)
|
||||
* 3. 扣除资源(MP)
|
||||
* 4. 创建技能实体
|
||||
* 5. 触发施法动画
|
||||
* 6. 移除请求标记
|
||||
*
|
||||
* 设计理念:
|
||||
* - 使用标记组件驱动,符合 ECS 理念
|
||||
* - 施法检查与执行分离
|
||||
* - 自动处理资源消耗和CD重置
|
||||
*/
|
||||
// @ecs.register('SCastSystem')
|
||||
export class SCastSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
|
||||
|
||||
/**
|
||||
* 过滤器:拥有技能数据 + 施法请求的实体
|
||||
*/
|
||||
filter(): ecs.IMatcher {
|
||||
return ecs.allOf(HeroSkillsComp, HeroAttrsComp, CSRequestComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 实体进入时触发(即请求施法时)
|
||||
*/
|
||||
entityEnter(e: ecs.Entity): void {
|
||||
if(!smc.mission.play || smc.mission.pause) return;
|
||||
const skillsComp = e.get(HeroSkillsComp);
|
||||
const heroAttrs = e.get(HeroAttrsComp);
|
||||
const request = e.get(CSRequestComp);
|
||||
const heroView = e.get(HeroViewComp);
|
||||
|
||||
// 1. 验证数据完整性
|
||||
if (!skillsComp || !heroAttrs || !request || !heroView) {
|
||||
console.warn("[SCastSystem] 数据不完整,取消施法");
|
||||
e.remove(CSRequestComp);
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 获取技能数据
|
||||
const skill = skillsComp.getSkill(request.s_uuid);
|
||||
if (!skill) {
|
||||
console.warn(`[SCastSystem] 技能索引无效: ${request.s_uuid }`);
|
||||
e.remove(CSRequestComp);
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 检查施法条件
|
||||
if (!this.checkCastConditions(skillsComp, heroAttrs, request.s_uuid)) {
|
||||
e.remove(CSRequestComp);
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. 执行施法
|
||||
this.executeCast(e, skill, request.targets, heroView);
|
||||
|
||||
// 5. 扣除资源和重置CD
|
||||
heroAttrs.mp -= skill.cost;
|
||||
skillsComp.resetCD(request.s_uuid);
|
||||
|
||||
// 6. 移除请求标记
|
||||
e.remove(CSRequestComp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查施法条件
|
||||
*/
|
||||
private checkCastConditions(skillsComp: HeroSkillsComp, heroAttrs: HeroAttrsComp, skillIndex: number): boolean {
|
||||
// 检查角色状态
|
||||
if (heroAttrs.is_dead) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查控制状态(眩晕、冰冻)
|
||||
if (heroAttrs.isStun() || heroAttrs.isFrost()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查CD和MP
|
||||
if (!skillsComp.canCast(skillIndex, heroAttrs.mp)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行施法
|
||||
*/
|
||||
private executeCast(casterEntity: ecs.Entity, skill: any, targets: Vec3[], heroView: HeroViewComp) {
|
||||
const config = SkillSet[skill.uuid];
|
||||
if (!config) {
|
||||
console.error("[SCastSystem] 技能配置不存在:", skill.uuid);
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. 播放施法动画
|
||||
heroView.playSkillEffect(skill.uuid);
|
||||
|
||||
// 2. 延迟创建技能实体(等待动画)
|
||||
const delay = config.with ?? 0.3; // 施法前摇时间
|
||||
heroView.scheduleOnce(() => {
|
||||
this.createSkill(skill.uuid, heroView, targets);
|
||||
}, delay);
|
||||
|
||||
const heroAttrs = casterEntity.get(HeroAttrsComp);
|
||||
console.log(`[SCastSystem] ${heroAttrs?.hero_name ?? '未知'} 施放技能: ${config.name}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建技能实体
|
||||
*/
|
||||
private createSkill(skillId: number, caster: HeroViewComp, targets: Vec3[]) {
|
||||
// 检查节点有效性
|
||||
if (!caster.node || !caster.node.isValid) {
|
||||
console.warn("[SCastSystem] 施法者节点无效");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取场景节点
|
||||
const parent = caster.node.parent;
|
||||
if (!parent) {
|
||||
console.warn("[SCastSystem] 场景节点无效");
|
||||
return;
|
||||
}
|
||||
|
||||
// ✅ 使用现有的 SkillEnt 创建技能
|
||||
// const skill = ecs.getEntity<Skill>(Skill);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "25f14ca0-5053-495e-bc3d-08b1bb4ee5d7",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -1,169 +1,251 @@
|
||||
import { _decorator } 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 { ItalConf, TalType, TalEType, talConf } from "../common/config/TalSet";
|
||||
import { BuffConf, SkillSet } from "../common/config/SkillSet";
|
||||
import { HeroInfo } from "../common/config/heroSet";
|
||||
import { BType } from "../common/config/HeroAttrs";
|
||||
import { TalAttrs, talConf, TalEffet, TalTarget, TriType} from "../common/config/TalSet";
|
||||
import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
|
||||
const { ccclass } = _decorator;
|
||||
|
||||
/**
|
||||
* 天赋触发统计接口
|
||||
* 记录各种触发条件的计数器,用于判断天赋是否满足触发条件
|
||||
* 天赋槽位接口定义
|
||||
* 描述单个天赋的数据结构
|
||||
*/
|
||||
interface FightStats {
|
||||
aCount: number; // 普通攻击计数 - 用于 ACTION_COUNT 类型天赋
|
||||
sCount: number; // 技能使用计数 - 用于 SKILL_COUNT 类型天赋
|
||||
dCount: number; // 受伤次数计数 - 用于 DAMAGE_COUNT 类型天赋
|
||||
level: number; // 当前等级 - 用于 LEVEL/LEVEL_UP 类型天赋
|
||||
export interface TalSlot {
|
||||
uuid: number; // 天赋唯一标识符
|
||||
name: string; // 天赋名称
|
||||
triType: TriType; // 天赋触发类型
|
||||
target: TalTarget;
|
||||
effet: TalEffet;
|
||||
attrs?:TalAttrs //触发的attrs效果的对应attrs value: number; // 触发的效果数值
|
||||
vType:BType; // 数值型还是百分比型
|
||||
value: number; // 触发的效果数值
|
||||
value_add: number; // 触发的效果数值增量
|
||||
count: number; // 执行次数,及可以触发的次数
|
||||
count_add: number; // 执行次数增量
|
||||
Trigger: number; // 天赋触发阈值
|
||||
Trigger_add: number; // 天赋触发阈值减值
|
||||
desc: string; // 天赋描述(说明触发条件和效果)
|
||||
cur: number; // 当前累积值
|
||||
}
|
||||
|
||||
/**
|
||||
* 天赋效果实例接口
|
||||
* 记录已激活天赋的当前状态,包括堆叠层数和最后触发时间
|
||||
*/
|
||||
interface TalEffect {
|
||||
uuid: number; // 天赋uuid
|
||||
stack: number; // 当前堆叠层数,用于可堆叠天赋
|
||||
lTTime: number; // 上次触发时间戳,可用于时效判断
|
||||
}
|
||||
|
||||
/**
|
||||
* 天赋系统组件类
|
||||
* 继承自 CCComp,作为 ECS 架构中的组件存在
|
||||
* 负责管理英雄的天赋系统,包括天赋获取、触发、效果应用等
|
||||
* 作为ECS架构中的组件,负责管理英雄的天赋系统
|
||||
*
|
||||
* 核心功能:
|
||||
* - 初始化英雄天赋系统
|
||||
* - 添加新天赋到英雄
|
||||
* - 累积天赋触发进度
|
||||
* - 检查并触发满足条件的天赋
|
||||
* - 管理天赋效果数值
|
||||
*/
|
||||
@ccclass('TalComp')
|
||||
@ecs.register('TalComp', false)
|
||||
export class TalComp extends ecs.Comp {
|
||||
/** 英雄视图组件引用,运行时获取避免循环引用 */
|
||||
/** 英雄视图组件引用,运行时获取以避免循环引用 */
|
||||
private heroView: any = null;
|
||||
private skillCon:any=null;
|
||||
/** 英雄唯一标识符,用于从配置中获取英雄信息 */
|
||||
|
||||
/** 英雄唯一标识符,用于从配置中获取英雄相关信息 */
|
||||
private heroUuid: number = 0;
|
||||
|
||||
/** 天赋触发统计,记录各种触发条件的当前状态 */
|
||||
private FStats: FightStats = { aCount: 0, sCount: 0, dCount: 0, level: 1 };
|
||||
|
||||
/** 活跃天赋效果映射,存储已激活的天赋实例 */
|
||||
private activeTals: TalEffect[] = [];
|
||||
private talEffects: ItalConf[] = [];
|
||||
/** 初始化标志,防止重复初始化 */
|
||||
private isInitialized: boolean = false;
|
||||
/** 天赋集合,以天赋ID为键,存储所有已获得的天赋 */
|
||||
Tals: Record<number, TalSlot> = {};
|
||||
|
||||
/**
|
||||
* 组件初始化方法
|
||||
* @param heroUuid 英雄唯一标识符
|
||||
*/
|
||||
init(heroUuid: number) {
|
||||
this.heroUuid = heroUuid;
|
||||
// 从实体中获取英雄视图组件引用
|
||||
this.heroView = this.ent.get(HeroViewComp);
|
||||
// 初始化天赋集合
|
||||
this.Tals = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* 组件生命周期函数 - 启动时调用
|
||||
* 获取英雄视图组件并初始化天赋系统
|
||||
* 为英雄添加一个新天赋
|
||||
* @param uuid 要添加的天赋ID
|
||||
*
|
||||
* 添加流程:
|
||||
* 1. 检查天赋是否已存在
|
||||
* 2. 检查天赋配置是否存在
|
||||
* 3. 创建并初始化天赋数据
|
||||
*/
|
||||
start() {
|
||||
// 运行时获取组件,避免编译时循环引用
|
||||
this.heroView = this.ent.get(HeroViewComp);
|
||||
if (this.heroView) {
|
||||
this.heroUuid = this.heroView.hero_uuid;
|
||||
this.initializeTalents();
|
||||
addTal(uuid: number) {
|
||||
// 检查天赋是否已存在
|
||||
if (this.Tals[uuid]) {
|
||||
console.error(`[TalComp]天赋已存在,天赋ID:${uuid}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取天赋配置
|
||||
const tConf = talConf[uuid];
|
||||
if (!tConf) {
|
||||
console.error(`[TalComp]天赋配置不存在,天赋ID:${uuid}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 创建并初始化天赋数据
|
||||
this.Tals[uuid] = {
|
||||
uuid: uuid,
|
||||
name: tConf.name,
|
||||
triType: tConf.triType,
|
||||
target: tConf.target,
|
||||
effet: tConf.effet,
|
||||
attrs: tConf.attrs,
|
||||
vType: tConf.vType,
|
||||
value: tConf.value, // 效果数值初始为配置值
|
||||
value_add: 0, // 效果数值增量初始为0
|
||||
count: 1, // 执行次数,及可以触发的次数
|
||||
count_add:0, // 执行次数增量初始为0
|
||||
Trigger: tConf.Trigger, // 触发阈值(后续可从配置中读取)
|
||||
Trigger_add: 0, // 触发阈值增量初始为0
|
||||
desc: tConf.desc,
|
||||
cur: 0, // 当前累积值初始为0
|
||||
};
|
||||
}
|
||||
checkTal() {
|
||||
return Object.keys(this.Tals).length > 0;
|
||||
}
|
||||
getTriggers() {
|
||||
// 存储所有触发的天赋
|
||||
let Triggers: Record<string, TalSlot> = {};
|
||||
// 遍历所有天赋
|
||||
for (let uuid in this.Tals) {
|
||||
const talent = this.Tals[uuid];
|
||||
if (talent.cur >= (talent.Trigger - talent.Trigger_add)) { // 修复触发条件,累积值达到或超过触发阈值时触发
|
||||
console.log(`[TalComp]天赋触发,天赋ID:${uuid}`);
|
||||
// 重置累积值
|
||||
talent.cur = 0;
|
||||
// 添加到触发列表
|
||||
Triggers[uuid] = talent;
|
||||
}
|
||||
}
|
||||
// 判断是否有天赋被触发
|
||||
return Triggers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新天赋的效果数值
|
||||
* @param uuid 天赋ID
|
||||
* @param val 要增减的数值
|
||||
*
|
||||
* 功能:
|
||||
* - 用于调整天赋的实际效果数值
|
||||
* - 可通过正负数来增加或减少效果
|
||||
*/
|
||||
updateVal(uuid: number, val: number) {
|
||||
// 检查天赋是否存在
|
||||
if (!this.Tals[uuid]) {
|
||||
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新天赋效果数值
|
||||
this.Tals[uuid].value_add += val;
|
||||
}
|
||||
|
||||
updateTrigger(uuid: number, val: number) {
|
||||
// 检查天赋是否存在
|
||||
if (!this.Tals[uuid]) {
|
||||
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新天赋触发阈值
|
||||
this.Tals[uuid].Trigger_add += val;
|
||||
if (this.Tals[uuid].Trigger-this.Tals[uuid].Trigger_add <= 1) {
|
||||
this.Tals[uuid].Trigger_add = this.Tals[uuid].Trigger-1;
|
||||
}
|
||||
}
|
||||
|
||||
private initializeTalents(): void {
|
||||
if (this.isInitialized || !this.heroView) return;
|
||||
this.FStats.level = this.heroView.lv || 1;
|
||||
this.getHeroTalents()
|
||||
this.isInitialized = true;
|
||||
}
|
||||
|
||||
private getHeroTalents(): ItalConf[] {
|
||||
this.activeTals = [];
|
||||
this.talEffects = [];
|
||||
if (!this.heroView) return [];
|
||||
const heroInfo = HeroInfo[this.heroUuid];
|
||||
if (!heroInfo?.tal) return [];
|
||||
for(let id of heroInfo.tal){
|
||||
let conf = talConf[id];
|
||||
if(conf){
|
||||
this.talEffects.push(conf)
|
||||
/**
|
||||
* 更新指定类型天赋的累积值
|
||||
* @param triType 天赋触发类型
|
||||
* @param val 要增加的累积值,默认值为1
|
||||
*
|
||||
* 设计注意:
|
||||
* - 当前实现只会更新第一个匹配类型的天赋
|
||||
* - 累积值用于后续判断是否触发天赋效果
|
||||
*/
|
||||
updateCur(triType: TriType, val: number = 1) {
|
||||
// 遍历所有天赋
|
||||
for (let uuid in this.Tals) {
|
||||
const talent = this.Tals[uuid];
|
||||
|
||||
// 找到所有匹配类型的天赋并更新
|
||||
if (talent.triType == triType) {
|
||||
talent.cur += val;
|
||||
this.checkTrigger(talent.uuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private doTalEffect(tal:ItalConf){
|
||||
console.log("doTalEffect",tal)
|
||||
if(tal.triggerType == TalEType.ATTRS){
|
||||
console.log("doTalEffect ATTRS",tal)
|
||||
let buff:BuffConf = {
|
||||
buff:tal.e_name,
|
||||
BType:tal.e_type,
|
||||
value:tal.e_value,
|
||||
time:0,
|
||||
chance:tal.chance,
|
||||
checkTrigger(uuid:number){
|
||||
const talent = this.Tals[uuid];
|
||||
if (talent.cur >= (talent.Trigger - talent.Trigger_add)) { // 修复触发条件,累积值达到或超过触发阈值时触发
|
||||
console.log(`[TalComp]天赋触发,天赋ID:${uuid}`);
|
||||
for(let i=0;i<(talent.count+talent.count_add);i++){
|
||||
this.doTriggerTal(talent.uuid);
|
||||
}
|
||||
this.heroView.addBuff(buff)
|
||||
}
|
||||
|
||||
if(tal.triggerType == TalEType.SKILL){
|
||||
console.log("doTalEffect SKILL",tal)
|
||||
let skill = SkillSet[tal.e_value];
|
||||
if(this.skillCon){
|
||||
this.skillCon.doSkill(skill,false,0)
|
||||
}
|
||||
}
|
||||
|
||||
if(tal.triggerType == TalEType.SKILL_MORE){
|
||||
console.log("doTalEffect SKILL_MORE",tal)
|
||||
this.heroView.skills.push(tal.e_value)
|
||||
}
|
||||
// 重置累积值
|
||||
talent.cur = 0;
|
||||
|
||||
}
|
||||
}
|
||||
private checkTrigger(tal:ItalConf) {
|
||||
let stats = this.FStats;
|
||||
switch (tal.type) {
|
||||
case TalType.LEVEL: return stats.level >= tal.t_value;
|
||||
case TalType.LEVEL_UP: return stats.level % tal.t_value === 0;
|
||||
case TalType.ACTION_COUNT: return stats.aCount >= tal.t_value;
|
||||
case TalType.SKILL_COUNT: return stats.sCount >= tal.t_value;
|
||||
case TalType.DAMAGE_COUNT: return stats.dCount >= tal.t_value;
|
||||
case TalType.INIT: return true;
|
||||
case TalType.DEAD: return false; // 单独处理
|
||||
default: return false;
|
||||
//执行天赋触发效果
|
||||
// 功能:
|
||||
// - 根据天赋类型执行相应的效果
|
||||
// - 支持计数型和数值型天赋
|
||||
// --heroAttrs.addTalent 是计数型天赋buff heroAttrs.addTalBuff 是数值型天赋buff
|
||||
doTriggerTal(uuid: number) {
|
||||
// 检查天赋是否存在
|
||||
if (!this.Tals[uuid]) {
|
||||
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
|
||||
return;
|
||||
}
|
||||
const talent = this.Tals[uuid];
|
||||
const heroAttrs=this.ent.get(HeroAttrsComp);
|
||||
switch(talent.effet){
|
||||
case TalEffet.ATK_DMG:
|
||||
heroAttrs.addCountTal(TalEffet.ATK_DMG, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.SKILL_DMG:
|
||||
heroAttrs.addCountTal(TalEffet.SKILL_DMG, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.LDMG:
|
||||
heroAttrs.addCountTal(TalEffet.LDMG, talent.value + talent.value_add);
|
||||
break;
|
||||
// case TalEffet.HP:
|
||||
// heroAttrs.addCountTal(TalEffet.HP, talent.value + talent.value_add);
|
||||
// break;
|
||||
// case TalEffet.MP:
|
||||
// heroAttrs.addCountTal(TalEffet.MP, talent.value + talent.value_add);
|
||||
// break;
|
||||
case TalEffet.WFUNY:
|
||||
heroAttrs.addCountTal(TalEffet.WFUNY, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.D_SKILL:
|
||||
heroAttrs.addCountTal(TalEffet.D_SKILL, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.C_ATK:
|
||||
heroAttrs.addCountTal(TalEffet.C_ATK, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.C_SKILL:
|
||||
heroAttrs.addCountTal(TalEffet.C_SKILL, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.C_MSKILL:
|
||||
heroAttrs.addCountTal(TalEffet.C_MSKILL, talent.value + talent.value_add);
|
||||
break;
|
||||
case TalEffet.BUFF:
|
||||
heroAttrs.addValueTal(talent.uuid, talent.attrs, talent.vType, talent.value + talent.value_add);
|
||||
break;
|
||||
}
|
||||
}
|
||||
private checkHasTal(TalType:TalType) {
|
||||
for(let tal of this.talEffects){
|
||||
if(TalType == tal.type){
|
||||
if (this.checkTrigger(tal)){
|
||||
this.doTalEffect(tal)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public onAction(): void {
|
||||
this.FStats.aCount++;
|
||||
this.checkHasTal(TalType.ACTION_COUNT);
|
||||
}
|
||||
|
||||
public onSkillUse(): void {
|
||||
this.FStats.sCount++;
|
||||
this.checkHasTal(TalType.SKILL_COUNT);
|
||||
}
|
||||
|
||||
public onDamageTaken(): void {
|
||||
this.FStats.dCount++;
|
||||
this.checkHasTal(TalType.DAMAGE_COUNT);
|
||||
}
|
||||
|
||||
public onLevelUp(newLevel: number): void {
|
||||
this.FStats.level = newLevel;
|
||||
this.checkHasTal(TalType.LEVEL);
|
||||
this.checkHasTal(TalType.LEVEL_UP);
|
||||
}
|
||||
|
||||
public onDeath(): void {
|
||||
this.checkHasTal(TalType.DEAD);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 重置组件状态
|
||||
*/
|
||||
reset() {
|
||||
this.isInitialized = false;
|
||||
this.Tals = {};
|
||||
this.heroUuid = 0;
|
||||
this.heroView = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "af691440-7aca-4cb5-9a78-9bfed9cb70de",
|
||||
"uuid": "0463b128-1ee2-4cee-972b-eaf9fee2bf6c",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
9
assets/script/game/hero/hit-flash-white/materials.meta
Normal file
9
assets/script/game/hero/hit-flash-white/materials.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "044ce6c2-4a58-4a83-8a5b-f6d7f89a3aa3",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
"__editorExtras__": {},
|
||||
"_native": "",
|
||||
"_effectAsset": {
|
||||
"__uuid__": "40c25c17-db22-4ae7-8d3a-f73cbb6d36ba",
|
||||
"__uuid__": "b8d82f81-c2f9-40e5-805b-922f0c170a79",
|
||||
"__expectedType__": "cc.EffectAsset"
|
||||
},
|
||||
"_techIdx": 0,
|
||||
@@ -26,15 +26,6 @@
|
||||
}
|
||||
],
|
||||
"_props": [
|
||||
{
|
||||
"glowColor": {
|
||||
"__type__": "cc.Color",
|
||||
"r": 255,
|
||||
"g": 235,
|
||||
"b": 0,
|
||||
"a": 255
|
||||
},
|
||||
"glowWidth": 0.002
|
||||
}
|
||||
{}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.0.21",
|
||||
"importer": "material",
|
||||
"imported": true,
|
||||
"uuid": "8eee8ab1-fe48-4b22-b956-3f5c18fc4810",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
9
assets/script/game/hero/hit-flash-white/scenes.meta
Normal file
9
assets/script/game/hero/hit-flash-white/scenes.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "e091410c-c7b6-4416-ae99-38697c103286",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"ver": "1.1.50",
|
||||
"importer": "scene",
|
||||
"imported": true,
|
||||
"uuid": "5e1d3eb2-c300-4627-94c7-2ee03b8314f1",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
9
assets/script/game/hero/hit-flash-white/scripts.meta
Normal file
9
assets/script/game/hero/hit-flash-white/scripts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "e4743688-2ecb-436b-8826-69fcb4485b73",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "df953176-a9fa-4f3e-865e-7956fccc4c52",
|
||||
"uuid": "954e4dd8-f902-4734-8529-9aa4c2580ec0",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
9
assets/script/game/hero/hit-flash-white/shaders.meta
Normal file
9
assets/script/game/hero/hit-flash-white/shaders.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "5553e1ee-12b8-410b-833c-33586c917944",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.
|
||||
CCEffect %{
|
||||
techniques:
|
||||
- passes:
|
||||
- vert: sprite-vs:vert
|
||||
frag: sprite-fs:frag
|
||||
depthStencilState:
|
||||
depthTest: false
|
||||
depthWrite: false
|
||||
blendState:
|
||||
targets:
|
||||
- blend: true
|
||||
blendSrc: src_alpha
|
||||
blendDst: one_minus_src_alpha
|
||||
blendDstAlpha: one_minus_src_alpha
|
||||
rasterizerState:
|
||||
cullMode: none
|
||||
properties:
|
||||
alphaThreshold: { value: 0.5 }
|
||||
}%
|
||||
|
||||
CCProgram sprite-vs %{
|
||||
precision highp float;
|
||||
#include <builtin/uniforms/cc-global>
|
||||
#if USE_LOCAL
|
||||
#include <builtin/uniforms/cc-local>
|
||||
#endif
|
||||
#if SAMPLE_FROM_RT
|
||||
#include <common/common-define>
|
||||
#endif
|
||||
in vec3 a_position;
|
||||
in vec2 a_texCoord;
|
||||
in vec4 a_color;
|
||||
|
||||
out vec4 color;
|
||||
out vec2 uv0;
|
||||
out vec4 lightColor;
|
||||
|
||||
vec4 vert () {
|
||||
vec4 pos = vec4(a_position, 1);
|
||||
|
||||
#if USE_LOCAL
|
||||
pos = cc_matWorld * pos;
|
||||
#endif
|
||||
|
||||
#if USE_PIXEL_ALIGNMENT
|
||||
pos = cc_matView * pos;
|
||||
pos.xyz = floor(pos.xyz);
|
||||
pos = cc_matProj * pos;
|
||||
#else
|
||||
pos = cc_matViewProj * pos;
|
||||
#endif
|
||||
|
||||
uv0 = a_texCoord;
|
||||
#if SAMPLE_FROM_RT
|
||||
CC_HANDLE_RT_SAMPLE_FLIP(uv0);
|
||||
#endif
|
||||
color = a_color;
|
||||
|
||||
lightColor = a_color;
|
||||
|
||||
return pos;
|
||||
}
|
||||
}%
|
||||
|
||||
CCProgram sprite-fs %{
|
||||
precision highp float;
|
||||
#include <builtin/internal/embedded-alpha>
|
||||
#include <builtin/internal/alpha-test>
|
||||
|
||||
in vec4 color;
|
||||
in vec4 lightColor;
|
||||
|
||||
#if USE_TEXTURE
|
||||
in vec2 uv0;
|
||||
#pragma builtin(local)
|
||||
layout(set = 2, binding = 12) uniform sampler2D cc_spriteTexture;
|
||||
#endif
|
||||
|
||||
vec4 frag () {
|
||||
vec4 o = vec4(1, 1, 1, 1);
|
||||
|
||||
#if USE_TEXTURE
|
||||
o *= CCSampleWithAlphaSeparated(cc_spriteTexture, uv0);
|
||||
#if IS_GRAY
|
||||
float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b;
|
||||
o.r = o.g = o.b = gray;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
o.rgb = o.rgb * (1.0 - lightColor.a) + lightColor.rgb * lightColor.a;
|
||||
|
||||
o *= color;
|
||||
ALPHA_TEST(o);
|
||||
return o;
|
||||
}
|
||||
}%
|
||||
@@ -2,14 +2,10 @@
|
||||
"ver": "1.7.1",
|
||||
"importer": "effect",
|
||||
"imported": true,
|
||||
"uuid": "cfeeea4f-db9c-42cd-a0f7-fc5cb37bd3d7",
|
||||
"uuid": "b8d82f81-c2f9-40e5-805b-922f0c170a79",
|
||||
"files": [
|
||||
".json"
|
||||
],
|
||||
"subMetas": {},
|
||||
"userData": {
|
||||
"combinations": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
"userData": {}
|
||||
}
|
||||
9
assets/script/game/hit-flash-white.meta
Normal file
9
assets/script/game/hit-flash-white.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "1.2.0",
|
||||
"importer": "directory",
|
||||
"imported": true,
|
||||
"uuid": "0463b128-1ee2-4cee-972b-eaf9fee2bf6c",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
@@ -27,9 +27,9 @@ export class HInfoComp extends CCComp {
|
||||
hero_pos:any={
|
||||
0:v3(420,-30,0), // 不在屏幕内
|
||||
1:v3(280,-30,0),
|
||||
2:v3(160,-33,0),
|
||||
2:v3(160,-30,0),
|
||||
3:v3(0,-40,0),
|
||||
4:v3(-160,-33,0),
|
||||
4:v3(-160,-30,0),
|
||||
5:v3(-280,-30,0),
|
||||
6:v3(-420,-30,0), // 不在屏幕内
|
||||
}
|
||||
@@ -53,11 +53,11 @@ export class HInfoComp extends CCComp {
|
||||
switch(posIndex) {
|
||||
case 2:
|
||||
case 4:
|
||||
return v3(-1.6, 1.6, 1); // 2、4位置:1.2倍缩放
|
||||
return v3(-1.5, 1.5, 1); // 2、4位置:1.5倍缩放
|
||||
case 3:
|
||||
return v3(-1.8, 1.8, 1); // 3位置(中心):1.5倍缩放
|
||||
default:
|
||||
return v3(-1.4, 1.4, 1); // 其他位置:1倍缩放
|
||||
return v3(-1.5, 1.5, 1); // 其他位置:1.5倍缩放
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@ export class SDataCom extends ecs.Comp {
|
||||
group:BoxSet=BoxSet.HERO
|
||||
fac: number = 0; // 0:hero 1:monster
|
||||
s_uuid:number=0
|
||||
ext_dmg:number=0 //额外伤害
|
||||
splash:number=0 //溅射伤害
|
||||
dmg_ratio:number=1 //伤害比例
|
||||
hit_count:number=0 //击中数量
|
||||
reset() {
|
||||
this.Attrs=null
|
||||
@@ -20,6 +23,9 @@ export class SDataCom extends ecs.Comp {
|
||||
this.s_uuid=0
|
||||
this.caster=null
|
||||
this.hit_count=0
|
||||
this.ext_dmg=0
|
||||
this.splash=0
|
||||
this.dmg_ratio=1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ export class Skill extends ecs.Entity {
|
||||
this.addComponents<SMoveDataComp>(SMoveDataComp);
|
||||
}
|
||||
load(startPos: Vec3, parent: Node, s_uuid: number, targetPos: Vec3,
|
||||
caster:HeroViewComp) {
|
||||
caster:HeroViewComp,ext_dmg:number=0,splash:number=0) {
|
||||
const config = SkillSet[s_uuid];
|
||||
|
||||
if (!config) {
|
||||
@@ -90,9 +90,11 @@ export class Skill extends ecs.Entity {
|
||||
const sDataCom = this.get(SDataCom);
|
||||
sDataCom.group=caster.box_group
|
||||
sDataCom.caster=caster
|
||||
sDataCom.Attrs=cAttrsComp.Attrs
|
||||
sDataCom.Attrs={...cAttrsComp.Attrs}
|
||||
sDataCom.s_uuid=s_uuid
|
||||
sDataCom.fac=cAttrsComp.fac
|
||||
sDataCom.ext_dmg=ext_dmg
|
||||
sDataCom.splash=splash
|
||||
}
|
||||
|
||||
/** 模块资源释放 */
|
||||
|
||||
@@ -201,10 +201,10 @@ console.log("道具1001数量:", itemInfo.result.data.count);
|
||||
const talents = await WxCloudApi.getTalents();
|
||||
|
||||
// 添加天赋点
|
||||
const result = await WxCloudApi.addTalent(1001, 1);
|
||||
const result = await WxCloudApi.addCountTal(1001, 1);
|
||||
|
||||
// 消耗天赋点
|
||||
const result = await WxCloudApi.consumeTalent(1001, 1);
|
||||
const result = await WxCloudApi.useCountTal(1001, 1);
|
||||
```
|
||||
|
||||
### 装备操作
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
md extensions
|
||||
cd extensions
|
||||
|
||||
IF EXIST oops-plugin-framework (
|
||||
goto update
|
||||
) ELSE (
|
||||
goto clone
|
||||
)
|
||||
|
||||
:clone
|
||||
git clone -b master https://gitee.com/dgflash/oops-plugin-framework.git
|
||||
|
||||
:update
|
||||
cd oops-plugin-framework
|
||||
git pull
|
||||
Reference in New Issue
Block a user