Add fixed-camera tower effect preview scene

This commit is contained in:
2026-09-24 22:02:14 +09:00
parent 926b3f6c5d
commit 0aba40db2b
31 changed files with 2923 additions and 0 deletions
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6db8650146b84fe8a739cf530c793dc4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

@@ -0,0 +1,344 @@
fileFormatVersion: 2
guid: 8a7f8851d1537f94691b2d683181108a
TextureImporter:
internalIDToNameTable:
- first:
213: 2625864492423660488
second: Support-T3-Aura-Back_0
- first:
213: 6957596673234890184
second: Support-T3-Aura-Back_1
- first:
213: -8136641146929216757
second: Support-T3-Aura-Back_2
- first:
213: 553678122676677230
second: Support-T3-Aura-Back_3
- first:
213: -582951979803005718
second: Support-T3-Aura-Back_4
- first:
213: -1934172877856188993
second: Support-T3-Aura-Back_5
- first:
213: 8294411990845620297
second: Support-T3-Aura-Back_6
- first:
213: 5340386719859757897
second: Support-T3-Aura-Back_7
- first:
213: 6215070279158843903
second: Support-T3-Aura-Back_8
- first:
213: -1823641742342381116
second: Support-T3-Aura-Back_9
- first:
213: 6824543295865738920
second: Support-T3-Aura-Back_10
- first:
213: 4055028723368550688
second: Support-T3-Aura-Back_11
- first:
213: -3686020541665534114
second: Support-T3-Aura-Back_12
- first:
213: -138832120568249401
second: Support-T3-Aura-Back_13
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Support-T3-Aura-Back_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 8c3493be7d1f07420800000000000000
internalID: 2625864492423660488
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Back_1
rect:
serializedVersion: 2
x: 100
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 8cdea96bf495e8060800000000000000
internalID: 6957596673234890184
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Back_2
rect:
serializedVersion: 2
x: 200
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: b0305749cf7d41f80800000000000000
internalID: -8136641146929216757
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Back_3
rect:
serializedVersion: 2
x: 300
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: e6a6c0ea15f0fa700800000000000000
internalID: 553678122676677230
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Back_4
rect:
serializedVersion: 2
x: 400
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: aec2bb25340f8e7f0800000000000000
internalID: -582951979803005718
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Back_5
rect:
serializedVersion: 2
x: 500
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: fb5df29e3007825e0800000000000000
internalID: -1934172877856188993
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Support-T3-Aura-Back_0: 2625864492423660488
Support-T3-Aura-Back_1: 6957596673234890184
Support-T3-Aura-Back_10: 6824543295865738920
Support-T3-Aura-Back_11: 4055028723368550688
Support-T3-Aura-Back_12: -3686020541665534114
Support-T3-Aura-Back_13: -138832120568249401
Support-T3-Aura-Back_2: -8136641146929216757
Support-T3-Aura-Back_3: 553678122676677230
Support-T3-Aura-Back_4: -582951979803005718
Support-T3-Aura-Back_5: -1934172877856188993
Support-T3-Aura-Back_6: 8294411990845620297
Support-T3-Aura-Back_7: 5340386719859757897
Support-T3-Aura-Back_8: 6215070279158843903
Support-T3-Aura-Back_9: -1823641742342381116
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

@@ -0,0 +1,312 @@
fileFormatVersion: 2
guid: 9927ec2f1ae7c0646a2b063acbe79cb7
TextureImporter:
internalIDToNameTable:
- first:
213: 6439581754918904443
second: Support-T3-Aura-Front_0
- first:
213: -1848515012116618896
second: Support-T3-Aura-Front_1
- first:
213: 5535982278147187572
second: Support-T3-Aura-Front_2
- first:
213: 1899910092312089176
second: Support-T3-Aura-Front_3
- first:
213: 5371754599361447530
second: Support-T3-Aura-Front_4
- first:
213: 1078346611947342504
second: Support-T3-Aura-Front_5
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Support-T3-Aura-Front_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: b72270cdc7dfd5950800000000000000
internalID: 6439581754918904443
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Front_1
rect:
serializedVersion: 2
x: 100
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 071efcce361c856e0800000000000000
internalID: -1848515012116618896
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Front_2
rect:
serializedVersion: 2
x: 200
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 47322d31d82c3dc40800000000000000
internalID: 5535982278147187572
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Front_3
rect:
serializedVersion: 2
x: 300
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 852117da926dd5a10800000000000000
internalID: 1899910092312089176
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Front_4
rect:
serializedVersion: 2
x: 400
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: a66828be85e4c8a40800000000000000
internalID: 5371754599361447530
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Support-T3-Aura-Front_5
rect:
serializedVersion: 2
x: 500
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.4}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 8aa0eddb78e07fe00800000000000000
internalID: 1078346611947342504
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Support-T3-Aura-Front_0: 6439581754918904443
Support-T3-Aura-Front_1: -1848515012116618896
Support-T3-Aura-Front_2: 5535982278147187572
Support-T3-Aura-Front_3: 1899910092312089176
Support-T3-Aura-Front_4: 5371754599361447530
Support-T3-Aura-Front_5: 1078346611947342504
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 81e88d2605cfe7c458d6eb5e6023a4e8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 24b439cf0401bb84998c20d509828e96
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6eaa6e4ebf9270048852cdf96a94a877
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fccc02f3fdc427143acc8e77b677f860
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d7b3ab3cb3cad9944b934ec12b64fe3c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,273 @@
fileFormatVersion: 2
guid: 07d9fe61cdf757d8a7f62ad5377aa0c6
TextureImporter:
internalIDToNameTable:
- first:
213: 418052971404361916
second: T3-Idle_0
- first:
213: 147307647049000706
second: T3-Idle_1
- first:
213: 190781876624806256
second: T3-Idle_2
- first:
213: 247170850925480392
second: T3-Idle_3
- first:
213: 704588256227899568
second: T3-Idle_4
- first:
213: 42177436562795895
second: T3-Idle_5
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: T3-Idle_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d1faddc65d4356fd87a182395bf1239e
internalID: 418052971404361916
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: T3-Idle_1
rect:
serializedVersion: 2
x: 100
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1c058990cc9656fc87901ed66b73339c
internalID: 147307647049000706
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: T3-Idle_2
rect:
serializedVersion: 2
x: 200
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 7387e6034a3b5768b9e1b6ee3e2de681
internalID: 190781876624806256
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: T3-Idle_3
rect:
serializedVersion: 2
x: 300
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9b52ebeecbef5aa3b99a91a958e2adc4
internalID: 247170850925480392
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: T3-Idle_4
rect:
serializedVersion: 2
x: 400
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: ba3a4ebc7d875a9b940f4985bfcde317
internalID: 704588256227899568
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: T3-Idle_5
rect:
serializedVersion: 2
x: 500
y: 0
width: 100
height: 100
alignment: 9
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 71acec0392e7591eb3858b9f2a0f5ca4
internalID: 42177436562795895
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: e12650af62c654f7b6c29498aae9b7fc
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
T3-Idle_0: 418052971404361916
T3-Idle_1: 147307647049000706
T3-Idle_2: 190781876624806256
T3-Idle_3: 247170850925480392
T3-Idle_4: 704588256227899568
T3-Idle_5: 42177436562795895
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f62b6b1eeada89543935a786413f4df0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 93ffa82ea1b751e45a096928b7ae8e50
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,221 @@
fileFormatVersion: 2
guid: fef49a593d0d5109a5c725d9181cf675
TextureImporter:
internalIDToNameTable:
- first:
213: 707903350941097808
second: Meteor-Flight_0
- first:
213: 1016458043408432884
second: Meteor-Flight_1
- first:
213: 339375107007095758
second: Meteor-Flight_2
- first:
213: 1057848838617313511
second: Meteor-Flight_3
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Meteor-Flight_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 19a7afb8c8ca5d9d9abef095b1344ad1
internalID: 707903350941097808
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Flight_1
rect:
serializedVersion: 2
x: 128
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: af835bc4c2b15ffc93a5d964d58310e3
internalID: 1016458043408432884
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Flight_2
rect:
serializedVersion: 2
x: 256
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 649ae40c1b7857b78bc7cdace3333f88
internalID: 339375107007095758
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Flight_3
rect:
serializedVersion: 2
x: 384
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 3e6d12c32d145e459064b6467a000079
internalID: 1057848838617313511
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: d37364d123875da1a879125bdbe32abb
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Meteor-Flight_0: 707903350941097808
Meteor-Flight_1: 1016458043408432884
Meteor-Flight_2: 339375107007095758
Meteor-Flight_3: 1057848838617313511
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,325 @@
fileFormatVersion: 2
guid: ef8d3178f579511c8a1b837e97797cd9
TextureImporter:
internalIDToNameTable:
- first:
213: 664242861021171994
second: Meteor-Impact_0
- first:
213: 936303696135754994
second: Meteor-Impact_1
- first:
213: 580702379162046464
second: Meteor-Impact_2
- first:
213: 1146539445324708633
second: Meteor-Impact_3
- first:
213: 1022198997503769769
second: Meteor-Impact_4
- first:
213: 1122202433558453644
second: Meteor-Impact_5
- first:
213: 652166684566318900
second: Meteor-Impact_6
- first:
213: 477737314020747539
second: Meteor-Impact_7
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 32
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Meteor-Impact_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 5ad3006efc545255b6d3bf1b8912bf3d
internalID: 664242861021171994
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_1
rect:
serializedVersion: 2
x: 128
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 81bd919d161d58149ec3dafd1bf8c6ec
internalID: 936303696135754994
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_2
rect:
serializedVersion: 2
x: 256
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d7ef973247c55129b64732d1c7e1f32d
internalID: 580702379162046464
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_3
rect:
serializedVersion: 2
x: 384
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2e70dfb61d1f52bc96336be4f098b2cb
internalID: 1146539445324708633
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_4
rect:
serializedVersion: 2
x: 512
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 97ac35a5cf6f5527b29f80dcbf951be5
internalID: 1022198997503769769
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_5
rect:
serializedVersion: 2
x: 640
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: e3c812d8db1a589ba148ab51afb61220
internalID: 1122202433558453644
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_6
rect:
serializedVersion: 2
x: 768
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1f6e6a1f428f5e35949cb2ec30f35a4b
internalID: 652166684566318900
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Meteor-Impact_7
rect:
serializedVersion: 2
x: 896
y: 0
width: 128
height: 128
alignment: 9
pivot: {x: 0.625, y: 0.375}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 38278b9b46a25f3da166c68fa3e10fab
internalID: 477737314020747539
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: fea8a05582d45f6ea64551f566fb7192
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Meteor-Impact_0: 664242861021171994
Meteor-Impact_1: 936303696135754994
Meteor-Impact_2: 580702379162046464
Meteor-Impact_3: 1146539445324708633
Meteor-Impact_4: 1022198997503769769
Meteor-Impact_5: 1122202433558453644
Meteor-Impact_6: 652166684566318900
Meteor-Impact_7: 477737314020747539
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,728 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 2
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 1
m_PVRFilteringGaussRadiusAO: 1
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &183060275
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 183060277}
- component: {fileID: 183060276}
m_Layer: 0
m_Name: Fixed Orthographic Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!20 &183060276
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 183060275}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.08, g: 0.1, b: 0.14, a: 1}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_Iso: 200
m_ShutterSpeed: 0.005
m_Aperture: 16
m_FocusDistance: 10
m_FocalLength: 50
m_BladeCount: 5
m_Curvature: {x: 2, y: 11}
m_BarrelClipping: 0.25
m_Anamorphism: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 1
orthographic size: 2.8125
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &183060277
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 183060275}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.3, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &235306843
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 235306844}
m_Layer: 0
m_Name: Target Ground Anchor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &235306844
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 235306843}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1008159579}
- {fileID: 782960877}
- {fileID: 1157104251}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &782960876
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 782960877}
m_Layer: 0
m_Name: Character Visual (cell center above foot anchor)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &782960877
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 782960876}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.28125, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1202749428}
m_Father: {fileID: 235306844}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1008159578
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1008159579}
- component: {fileID: 1008159580}
m_Layer: 0
m_Name: Aura Back
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1008159579
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1008159578}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 235306844}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1008159580
SpriteRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1008159578}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 10
m_MaskInteraction: 0
m_Sprite: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 0
m_SpriteSortPoint: 0
--- !u!1 &1157104250
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1157104251}
- component: {fileID: 1157104252}
m_Layer: 0
m_Name: Aura Front
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1157104251
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1157104250}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 235306844}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1157104252
SpriteRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1157104250}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 40
m_MaskInteraction: 0
m_Sprite: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 0
m_SpriteSortPoint: 0
--- !u!1 &1202749427
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1202749428}
- component: {fileID: 1202749429}
m_Layer: 0
m_Name: Fire T3 Character (effect target)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1202749428
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1202749427}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 782960877}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1202749429
SpriteRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1202749427}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 30
m_MaskInteraction: 0
m_Sprite: {fileID: 418052971404361916, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 3.125, y: 3.125}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_SpriteSortPoint: 0
--- !u!1 &1491340921
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1491340923}
- component: {fileID: 1491340922}
m_Layer: 0
m_Name: Defense 2.5D Preview
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1491340922
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1491340921}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c00de25d48634556853f7a2df8445f18, type: 3}
m_Name:
m_EditorClassIdentifier: BumpCombat.Runtime::BumpCombat.Defense.Defense25DPreview
body: {fileID: 1202749429}
auraBack: {fileID: 1008159580}
auraFront: {fileID: 1157104252}
meteor: {fileID: 2023552205}
auraBackFrames:
- {fileID: 2625864492423660488, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
- {fileID: 6957596673234890184, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
- {fileID: -8136641146929216757, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
- {fileID: 553678122676677230, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
- {fileID: -582951979803005718, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
- {fileID: -1934172877856188993, guid: 8a7f8851d1537f94691b2d683181108a, type: 3}
auraFrontFrames:
- {fileID: 6439581754918904443, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
- {fileID: -1848515012116618896, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
- {fileID: 5535982278147187572, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
- {fileID: 1899910092312089176, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
- {fileID: 5371754599361447530, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
- {fileID: 1078346611947342504, guid: 9927ec2f1ae7c0646a2b063acbe79cb7, type: 3}
meteorFlightFrames:
- {fileID: 707903350941097808, guid: fef49a593d0d5109a5c725d9181cf675, type: 3}
- {fileID: 1016458043408432884, guid: fef49a593d0d5109a5c725d9181cf675, type: 3}
- {fileID: 339375107007095758, guid: fef49a593d0d5109a5c725d9181cf675, type: 3}
- {fileID: 1057848838617313511, guid: fef49a593d0d5109a5c725d9181cf675, type: 3}
meteorImpactFrames:
- {fileID: 664242861021171994, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 936303696135754994, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 580702379162046464, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 1146539445324708633, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 1022198997503769769, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 1122202433558453644, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 652166684566318900, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
- {fileID: 477737314020747539, guid: ef8d3178f579511c8a1b837e97797cd9, type: 3}
bodyFrames:
- {fileID: 418052971404361916, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
- {fileID: 147307647049000706, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
- {fileID: 190781876624806256, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
- {fileID: 247170850925480392, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
- {fileID: 704588256227899568, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
- {fileID: 42177436562795895, guid: 07d9fe61cdf757d8a7f62ad5377aa0c6, type: 3}
groundAnchor: {fileID: 235306844}
bodyVisual: {fileID: 782960877}
flightHeight: 1.7
--- !u!4 &1491340923
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1491340921}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2023552204
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2023552206}
- component: {fileID: 2023552205}
m_Layer: 0
m_Name: Meteor (ground position + height projection)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &2023552205
SpriteRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2023552204}
m_Enabled: 0
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 50
m_MaskInteraction: 0
m_Sprite: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 0
m_SpriteSortPoint: 0
--- !u!4 &2023552206
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2023552204}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 183060277}
- {fileID: 235306844}
- {fileID: 2023552206}
- {fileID: 1491340923}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b5543b710e1081342899044362ee74ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,159 @@
using System.Collections.Generic;
namespace BumpCombat.Defense
{
internal static class DefenseTowerArtDurations
{
private static readonly Dictionary<string, int[]> Values = new()
{
["Bodies/Fire/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T1-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T2-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T3-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/Base-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T4-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T1-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T2-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T3-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/Base-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Fire/T4-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T1-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T2-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T3-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/Base-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T4-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T1-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T2-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T3-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/Base-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Lightning/T4-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T1-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T2-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T3-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/Base-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T4-Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T1-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T2-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T3-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/Base-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Ice/T4-Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T1-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T2-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T3-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/Base-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T4-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T1-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T2-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T3-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/Base-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Control/T4-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T1-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T2-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T3-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Support/Base-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T4-Attack"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T1-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T2-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T3-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/Base-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Support/T4-Heal"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Summon/T1-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Summon/T2-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Summon/T3-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Summon/Base-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Bodies/Summon/T4-Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Effects/Fire/T1-Fireball"] = new[] { 90, 90, 90, 90 },
["Effects/Fire/T2-Fireball"] = new[] { 90, 90, 90, 90 },
["Effects/Fire/T3-Fireball"] = new[] { 90, 90, 90, 90 },
["Effects/Fire/Impact"] = new[] { 45, 55, 60, 50 },
["Effects/Fire/Meteor-Flight"] = new[] { 80, 80, 80, 80 },
["Effects/Fire/Meteor-Impact"] = new[] { 40, 50, 60, 70, 60, 60, 60, 80 },
["Sources/BlackKnight-NoSkull"] = new[] { 125, 125, 125, 125, 125, 125, 125 },
["Effects/Fire/Flamethrower"] = new[] { 80, 80, 80, 70, 65, 65, 70 },
["Effects/Lightning/T1-Bolt"] = new[] { 30, 40, 30, 30, 40, 40, 40, 50 },
["Effects/Lightning/T2-Bolt"] = new[] { 30, 40, 30, 30, 40, 40, 40, 50 },
["Effects/Lightning/T3-Bolt"] = new[] { 30, 40, 30, 30, 40, 40, 40, 50 },
["Effects/Lightning/Arc"] = new[] { 30, 40, 30, 30, 40, 40, 40, 50 },
["Effects/Lightning/ImpactWave"] = new[] { 40, 40, 50, 50, 60, 60 },
["Effects/Lightning/LightningStorm"] = new[] { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 },
["Effects/Ice/T1-Volley"] = new[] { 125 },
["Effects/Ice/T2-Volley"] = new[] { 125 },
["Effects/Ice/T3-Volley"] = new[] { 125 },
["Effects/Ice/Shard"] = new[] { 125 },
["Effects/Ice/Freezebolt"] = new[] { 85, 85, 85, 85 },
["Effects/Ice/Impact"] = new[] { 40, 50, 60, 70 },
["Effects/Ice/GlacialCage-Front"] = new[] { 65, 65, 90, 140, 140, 140, 70, 70 },
["Effects/Ice/GlacialCage-Back"] = new[] { 65, 65, 90, 140, 140, 140, 70, 70 },
["Effects/Control/T1-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Control/T2-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Control/T3-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Support/T1-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Support/T2-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Support/T3-Aura"] = new[] { 140, 140, 140, 140, 140, 140 },
["Effects/Control/StoneGaze"] = new[] { 90, 90, 90, 90, 90, 90, 90, 90 },
["Effects/Control/Temporal"] = new[] { 170, 170, 170, 170, 170, 170, 170, 170 },
["Effects/Support/Imbuing"] = new[] { 130, 130, 130, 130, 130, 130, 130, 130 },
["Effects/Support/Smothering"] = new[] { 150, 150, 150, 150, 150, 150, 150, 150 },
["Summons/Slime/Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/GiantSlime/Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/Slime/Walk"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/GiantSlime/Walk"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/Slime/Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/GiantSlime/Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/Slime/Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Summons/GiantSlime/Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Summons/Slime/Hurt"] = new[] { 125, 125, 125, 125 },
["Summons/GiantSlime/Hurt"] = new[] { 125, 125, 125, 125 },
["Summons/Slime/Death"] = new[] { 125, 125, 125, 125 },
["Summons/GiantSlime/Death"] = new[] { 125, 125, 125, 125 },
["Summons/LavaSlime/Idle"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/LavaSlime/Walk"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/LavaSlime/Attack01"] = new[] { 125, 125, 125, 125, 125, 125 },
["Summons/LavaSlime/Attack02"] = new[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 },
["Summons/LavaSlime/Hurt"] = new[] { 125, 125, 125, 125 },
["Summons/LavaSlime/Death"] = new[] { 125, 125, 125, 125 },
["Summons/LavaSlime/GroundSpike-Segment"] = new[] { 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 },
["Summons/LavaSlime/GroundSpike-Wave"] = new[] { 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 },
};
public static ICollection<string> Keys => Values.Keys;
public static int FrameCount(string key)
{
return Values.TryGetValue(key, out int[] values) ? values.Length : 0;
}
public static float Seconds(string key, int frame)
{
if (!Values.TryGetValue(key, out int[] values) || values.Length == 0)
{
return 0.125f;
}
int safeFrame = frame < 0 ? 0 : frame >= values.Length ? values.Length - 1 : frame;
return values[safeFrame] / 1000f;
}
}
}
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fe0c687a555c4bc291e278b2e7dabc04
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,123 @@
using System.Collections;
using UnityEngine;
namespace BumpCombat.Defense
{
public sealed class Defense25DPreview : MonoBehaviour
{
private const string BodyKey = "Bodies/Fire/T3-Idle";
private const string FlightKey = "Effects/Fire/Meteor-Flight";
private const string ImpactKey = "Effects/Fire/Meteor-Impact";
private const float AuraFrameSeconds = 0.14f;
[SerializeField] private SpriteRenderer body, auraBack, auraFront, meteor;
[SerializeField] private Sprite[] auraBackFrames, auraFrontFrames, meteorFlightFrames, meteorImpactFrames, bodyFrames;
[SerializeField] private Transform groundAnchor, bodyVisual;
[SerializeField] private float flightHeight = 1.7f;
public SpriteRenderer Body => body;
public SpriteRenderer AuraBack => auraBack;
public SpriteRenderer AuraFront => auraFront;
public SpriteRenderer Meteor => meteor;
public Sprite[] AuraBackFrames => auraBackFrames;
public Sprite[] AuraFrontFrames => auraFrontFrames;
public Sprite[] MeteorFlightFrames => meteorFlightFrames;
public Sprite[] MeteorImpactFrames => meteorImpactFrames;
public Sprite[] BodyFrames => bodyFrames;
public Transform GroundAnchor => groundAnchor;
public Transform BodyVisual => bodyVisual;
public float CurrentMeteorHeight { get; private set; }
public Vector2 CurrentMeteorGround { get; private set; }
public void Configure(Sprite[] back, Sprite[] front, Sprite[] flight, Sprite[] impact, Sprite[] character)
{
auraBackFrames = back; auraFrontFrames = front; meteorFlightFrames = flight;
meteorImpactFrames = impact; bodyFrames = character;
}
public static Vector3 ProjectGroundAndHeight(Vector2 groundPosition, float height) =>
new Vector3(groundPosition.x - height, groundPosition.y + height, 0f);
private IEnumerator Start()
{
StartCoroutine(AnimateAura());
StartCoroutine(AnimateBody());
StartCoroutine(MoveTarget());
while (true)
{
yield return new WaitForSeconds(0.25f);
yield return PlayMeteor();
yield return new WaitForSeconds(0.55f);
}
}
private IEnumerator MoveTarget()
{
while (true)
{
Vector3 p = groundAnchor.position;
p.x = Mathf.Sin(Time.time * 0.7f) * 0.65f;
groundAnchor.position = p;
yield return null;
}
}
private IEnumerator AnimateAura()
{
int frame = 0;
while (true)
{
auraBack.sprite = auraBackFrames[frame];
auraFront.sprite = auraFrontFrames[frame];
frame = (frame + 1) % auraBackFrames.Length;
yield return new WaitForSeconds(AuraFrameSeconds);
}
}
private IEnumerator AnimateBody()
{
int frame = 0;
while (true)
{
body.sprite = bodyFrames[frame];
frame = (frame + 1) % bodyFrames.Length;
yield return new WaitForSeconds(DefenseTowerArt.FrameSeconds(BodyKey, frame == 0 ? bodyFrames.Length - 1 : frame - 1));
}
}
private IEnumerator PlayMeteor()
{
CurrentMeteorGround = groundAnchor.position;
meteor.enabled = true;
CurrentMeteorHeight = flightHeight;
float flightDuration = 0f;
for (int i = 0; i < meteorFlightFrames.Length; i++) flightDuration += DefenseTowerArt.FrameSeconds(FlightKey, i);
float elapsed = 0f;
for (int i = 0; i < meteorFlightFrames.Length; i++)
{
meteor.sprite = meteorFlightFrames[i];
float frameSeconds = DefenseTowerArt.FrameSeconds(FlightKey, i);
float frameElapsed = 0f;
while (frameElapsed < frameSeconds)
{
CurrentMeteorHeight = flightHeight * (1f - elapsed / flightDuration);
meteor.transform.position = ProjectGroundAndHeight(CurrentMeteorGround, CurrentMeteorHeight);
float dt = Mathf.Min(Time.deltaTime, frameSeconds - frameElapsed);
frameElapsed += dt;
elapsed += dt;
yield return null;
}
}
CurrentMeteorHeight = 0f;
meteor.transform.position = ProjectGroundAndHeight(CurrentMeteorGround, 0f);
for (int i = 0; i < meteorImpactFrames.Length; i++)
{
meteor.sprite = meteorImpactFrames[i];
yield return new WaitForSeconds(DefenseTowerArt.FrameSeconds(ImpactKey, i));
}
meteor.enabled = false;
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c00de25d48634556853f7a2df8445f18
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace BumpCombat.Defense
{
public static class DefenseTowerArt
{
private const string ResourceRoot = "DefenseTowers-v1/";
private static readonly Dictionary<string, Sprite[]> Frames = new();
public static ICollection<string> Keys => DefenseTowerArtDurations.Keys;
public static int ExpectedFrameCount(string key)
{
return DefenseTowerArtDurations.FrameCount(key);
}
public static Sprite[] Load(string key)
{
if (string.IsNullOrEmpty(key))
{
return Array.Empty<Sprite>();
}
if (!Frames.TryGetValue(key, out Sprite[] sprites))
{
sprites = Resources.LoadAll<Sprite>(ResourceRoot + key);
Array.Sort(sprites, CompareFrameNames);
Frames.Add(key, sprites);
}
return sprites;
}
public static float FrameSeconds(string key, int frame)
{
return DefenseTowerArtDurations.Seconds(key, frame);
}
public static string BodyKey(DefenseTowerKind kind, int tier, string motion)
{
string family = kind switch
{
DefenseTowerKind.Direct => "Fire",
DefenseTowerKind.Summon => "Summon",
DefenseTowerKind.Lightning => "Lightning",
DefenseTowerKind.Cold => "Ice",
DefenseTowerKind.Seismic => "Control",
_ => "Support",
};
return $"Bodies/{family}/T{tier}-{motion}";
}
private static int CompareFrameNames(Sprite left, Sprite right)
{
return FrameIndex(left.name).CompareTo(FrameIndex(right.name));
}
private static int FrameIndex(string name)
{
int separator = name.LastIndexOf('_');
return separator >= 0 && int.TryParse(name.Substring(separator + 1), out int index)
? index : 0;
}
}
}
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3608a711d7f74976b57e54ef7981c28a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,127 @@
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
using BumpCombat.Defense;
namespace BumpCombat.Editor
{
public static class Defense25DPreviewSetup
{
private const string ScenePath = "Assets/_Project/Scenes/Defense25DPreview.unity";
private const string PreviewArt = "Assets/_Project/Art/Defense25DPreview";
private const string BackName = "Support-T3-Aura-Back";
private const string FrontName = "Support-T3-Aura-Front";
[MenuItem("BumpCombat/Defense 2.5D/Build and Open Preview Scene")]
public static void BuildAndOpen() {
if (!Application.isBatchMode && !EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) return;
ImportParentAuraArt();
AssetDatabase.Refresh();
Scene scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);
var cameraObject = new GameObject("Fixed Orthographic Camera");
var camera = cameraObject.AddComponent<Camera>();
camera.orthographic = true;
camera.orthographicSize = 2.8125f;
camera.clearFlags = CameraClearFlags.SolidColor;
camera.backgroundColor = new Color(0.08f, 0.1f, 0.14f);
camera.transform.position = new Vector3(0f, 0.3f, -10f);
camera.tag = "MainCamera";
var anchor = new GameObject("Target Ground Anchor").transform;
var back = CreateSprite("Aura Back", anchor, 10);
back.transform.localScale = Vector3.one * 0.8f;
var bodyVisual = new GameObject("Character Visual (cell center above foot anchor)").transform;
bodyVisual.SetParent(anchor, false);
bodyVisual.localPosition = new Vector3(0f, 9f / 32f, 0f);
var body = CreateSprite("Fire T3 Character (effect target)", bodyVisual, 30);
Sprite[] bodyFrames = DefenseTowerArt.Load("Bodies/Fire/T3-Idle");
body.sprite = bodyFrames.FirstOrDefault();
var front = CreateSprite("Aura Front", anchor, 40);
front.transform.localScale = back.transform.localScale;
var meteor = CreateSprite("Meteor (ground position + height projection)", null, 50);
meteor.enabled = false;
var root = new GameObject("Defense 2.5D Preview");
var preview = root.AddComponent<Defense25DPreview>();
var so = new SerializedObject(preview);
so.FindProperty("flightHeight").floatValue = 1.7f;
so.FindProperty("body").objectReferenceValue = body;
so.FindProperty("auraBack").objectReferenceValue = back;
so.FindProperty("auraFront").objectReferenceValue = front;
so.FindProperty("meteor").objectReferenceValue = meteor;
so.FindProperty("groundAnchor").objectReferenceValue = anchor;
so.FindProperty("bodyVisual").objectReferenceValue = bodyVisual;
so.ApplyModifiedPropertiesWithoutUndo();
preview.Configure(LoadPreviewFrames(BackName), LoadPreviewFrames(FrontName),
DefenseTowerArt.Load("Effects/Fire/Meteor-Flight"), DefenseTowerArt.Load("Effects/Fire/Meteor-Impact"), bodyFrames);
EditorUtility.SetDirty(preview);
EditorSceneManager.SaveScene(scene, ScenePath);
Selection.activeGameObject = root;
EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath<SceneAsset>(ScenePath));
Debug.Log($"Defense 2.5D preview saved: {ScenePath}; aura={preview.AuraBackFrames.Length}/{preview.AuraFrontFrames.Length}; body=Fire T3 Idle.");
}
private static void ImportParentAuraArt()
{
string directory = Path.GetFullPath(Path.Combine(Application.dataPath, "_Project/Art/Defense25DPreview"));
Directory.CreateDirectory(directory);
string backTarget = Path.Combine(directory, BackName + ".png");
string frontTarget = Path.Combine(directory, FrontName + ".png");
string sourceRoot = File.Exists(backTarget) && File.Exists(frontTarget) ? null : FindParentOutputRoot();
ImportAura(sourceRoot == null ? null : Path.Combine(sourceRoot, BackName + ".png"), backTarget, $"{PreviewArt}/{BackName}.png");
ImportAura(sourceRoot == null ? null : Path.Combine(sourceRoot, FrontName + ".png"), frontTarget, $"{PreviewArt}/{FrontName}.png");
}
private static string FindParentOutputRoot()
{
for (DirectoryInfo folder = new DirectoryInfo(Application.dataPath); folder != null; folder = folder.Parent)
{
string candidate = Path.Combine(folder.FullName, "output/tower-25d-v1/assets");
if (File.Exists(Path.Combine(candidate, BackName + ".png")) && File.Exists(Path.Combine(candidate, FrontName + ".png"))) return candidate;
}
throw new FileNotFoundException("Could not find output/tower-25d-v1/assets with both parent aura sheets.");
}
private static void ImportAura(string source, string target, string assetPath)
{
if (!File.Exists(target)) File.Copy(source, target);
AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate);
var importer = (TextureImporter)AssetImporter.GetAtPath(assetPath);
importer.textureType = TextureImporterType.Sprite;
importer.spriteImportMode = SpriteImportMode.Multiple;
importer.spritePixelsPerUnit = 32;
importer.filterMode = FilterMode.Point;
importer.mipmapEnabled = false;
importer.textureCompression = TextureImporterCompression.Uncompressed;
foreach (string platform in new[] { "DefaultTexturePlatform", "Standalone", "WebGL", "Android", "iPhone" })
{
TextureImporterPlatformSettings settings = importer.GetPlatformTextureSettings(platform);
settings.name = platform;
settings.overridden = true;
settings.textureCompression = TextureImporterCompression.Uncompressed;
importer.SetPlatformTextureSettings(settings);
}
var metas = new SpriteMetaData[6];
for (int i = 0; i < metas.Length; i++)
metas[i] = new SpriteMetaData { name = Path.GetFileNameWithoutExtension(target) + "_" + i,
rect = new Rect(i * 100, 0, 100, 100), alignment = (int)SpriteAlignment.Custom, pivot = new Vector2(0.5f, 0.4f) };
importer.spritesheet = metas;
importer.SaveAndReimport();
}
private static Sprite[] LoadPreviewFrames(string name) =>
AssetDatabase.LoadAllAssetsAtPath($"{PreviewArt}/{name}.png").OfType<Sprite>().OrderBy(s => s.name).ToArray();
private static SpriteRenderer CreateSprite(string name, Transform parent, int order)
{
var go = new GameObject(name);
if (parent != null) go.transform.SetParent(parent, false);
var renderer = go.AddComponent<SpriteRenderer>();
renderer.sortingOrder = order;
return renderer;
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a3d92f18b0aa45df9a6f1d2a9fd12ac7
@@ -0,0 +1,121 @@
using System.Collections;
using System.IO;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.TestTools;
#if UNITY_EDITOR
using UnityEditor.SceneManagement;
#endif
using BumpCombat.Defense;
namespace BumpCombat.PlayModeTests
{
public sealed class Defense25DPreviewTests
{
private float previousTimeScale;
[UnitySetUp]
public IEnumerator SetNormalTimeScale()
{
previousTimeScale = Time.timeScale;
Time.timeScale = 1f;
yield return null;
}
[UnityTearDown]
public IEnumerator RestoreTimeScale()
{
Time.timeScale = previousTimeScale;
yield return null;
}
[UnityTest]
public IEnumerator FireTargetAuraAndMeteor_KeepGroundHeightLayersAndCaptureRuntimeFrames()
{
#if UNITY_EDITOR
EditorSceneManager.LoadSceneInPlayMode("Assets/_Project/Scenes/Defense25DPreview.unity", new LoadSceneParameters(LoadSceneMode.Single));
#else
SceneManager.LoadScene("Defense25DPreview");
#endif
yield return null;
var preview = Object.FindFirstObjectByType<Defense25DPreview>();
Assert.That(preview, Is.Not.Null);
Assert.That(preview.AuraBackFrames.Length, Is.EqualTo(6));
Assert.That(preview.AuraFrontFrames.Length, Is.EqualTo(6));
Assert.That(preview.BodyFrames.Length, Is.EqualTo(6));
Assert.That(preview.MeteorFlightFrames.Length, Is.EqualTo(4));
Assert.That(preview.MeteorImpactFrames.Length, Is.EqualTo(8));
Assert.That(preview.Body.sprite.name, Does.StartWith("T3-Idle_"));
Assert.That(preview.Body.transform.parent.GetComponentsInChildren<SpriteRenderer>().Length, Is.EqualTo(1));
Assert.That(preview.AuraBack.sortingOrder, Is.LessThan(preview.Body.sortingOrder));
Assert.That(preview.Body.sortingOrder, Is.LessThan(preview.AuraFront.sortingOrder));
Assert.That(preview.AuraBack.transform.position, Is.EqualTo(preview.AuraFront.transform.position));
Assert.That(preview.AuraBackFrames[0].pivot / preview.AuraBackFrames[0].rect.size, Is.EqualTo(new Vector2(0.5f, 0.4f)));
Assert.That(Camera.main.orthographicSize, Is.EqualTo(2.8125f));
Assert.That(preview.AuraBack.transform.localScale, Is.EqualTo(preview.AuraFront.transform.localScale));
Assert.That(preview.BodyVisual.localPosition.y, Is.EqualTo(9f / 32f).Within(0.0001f));
Assert.That(Defense25DPreview.ProjectGroundAndHeight(new Vector2(3f, 4f), 2f), Is.EqualTo(new Vector3(1f, 6f, 0f)));
string output = FindOutputDirectory();
float deadline = Time.realtimeSinceStartup + 5f;
while (!preview.Meteor.enabled && Time.realtimeSinceStartup < deadline) yield return null;
Assert.That(preview.Meteor.enabled, Is.True, "Meteor did not start within five realtime seconds.");
Capture(Camera.main, Path.Combine(output, "runtime-01-meteor-early.png"));
Vector3 earlyViewport = Camera.main.WorldToViewportPoint(preview.Meteor.transform.position);
Assert.That(earlyViewport.y, Is.InRange(0f, 1f), "Early meteor must stay within the camera frame.");
float initialHeight = preview.CurrentMeteorHeight;
deadline = Time.realtimeSinceStartup + 5f;
while (!(preview.CurrentMeteorHeight > 0f && preview.CurrentMeteorHeight <= initialHeight * 0.6f) &&
Time.realtimeSinceStartup < deadline) yield return null;
Assert.That(preview.CurrentMeteorHeight, Is.GreaterThan(0f).And.LessThanOrEqualTo(initialHeight * 0.6f),
"Midflight capture did not reach the height threshold within five realtime seconds.");
Capture(Camera.main, Path.Combine(output, "runtime-02-meteor-midflight.png"));
Assert.That(preview.Meteor.transform.position, Is.Not.EqualTo(preview.GroundAnchor.position));
Assert.That(preview.CurrentMeteorGround, Is.Not.EqualTo((Vector2)preview.GroundAnchor.position));
deadline = Time.realtimeSinceStartup + 5f;
while (!(preview.Meteor.enabled && preview.CurrentMeteorHeight <= 0f) &&
Time.realtimeSinceStartup < deadline) yield return null;
Assert.That(preview.Meteor.enabled && preview.CurrentMeteorHeight <= 0f, Is.True,
"Meteor did not reach ground height within five realtime seconds.");
Capture(Camera.main, Path.Combine(output, "runtime-03-meteor-impact.png"));
deadline = Time.realtimeSinceStartup + 5f;
while (preview.Meteor.enabled && Time.realtimeSinceStartup < deadline) yield return null;
Assert.That(preview.Meteor.enabled, Is.False, "Meteor impact sequence did not finish within five realtime seconds.");
Assert.That(preview.AuraBack.transform.position.x, Is.EqualTo(preview.GroundAnchor.position.x).Within(0.0001f));
}
private static void Capture(Camera camera, string path)
{
const int width = 1280, height = 720;
var texture = new RenderTexture(width, height, 24, RenderTextureFormat.ARGB32);
var image = new Texture2D(width, height, TextureFormat.RGB24, false);
camera.targetTexture = texture;
camera.Render();
RenderTexture previous = RenderTexture.active;
RenderTexture.active = texture;
image.ReadPixels(new Rect(0, 0, width, height), 0, 0);
image.Apply();
File.WriteAllBytes(path, image.EncodeToPNG());
camera.targetTexture = null;
RenderTexture.active = previous;
Object.Destroy(texture);
Object.Destroy(image);
}
private static string FindOutputDirectory()
{
for (DirectoryInfo folder = new DirectoryInfo(Application.dataPath); folder != null; folder = folder.Parent)
{
string output = Path.Combine(folder.FullName, "output/tower-25d-v1");
if (Directory.Exists(output)) return output;
}
string projectOutput = Path.GetFullPath(Path.Combine(Application.dataPath, "../output/tower-25d-v1"));
Directory.CreateDirectory(projectOutput);
return projectOutput;
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 417f0ae0e37f4cc38c234a7e89c06472