Compare commits

..

38 Commits

Author SHA1 Message Date
9ae6535915
chore(release): v1.0.2 2025-05-17 21:56:46 +02:00
87bed290dc
Merge branch 'main' into develop 2025-05-17 21:55:52 +02:00
a8cf1669f5
chore: clean LevelEditor 2025-05-17 21:55:38 +02:00
Vincent PETT
470cff34e1 Merge branch 'develop' of github.com:boudji-ludwig-pett/cnam-geometry-dash into develop 2025-05-17 21:51:53 +02:00
Vincent PETT
068c38a411 fix: obstacle block in editor map 2025-05-17 21:51:50 +02:00
f717507eb2
chore(release): v1.0.1 2025-05-17 21:45:21 +02:00
a96463f186
ci: overwrite Artifact 2025-05-17 21:02:29 +02:00
885dd802bb
chore(release): v1.0.0 2025-05-17 20:46:11 +02:00
c38eecfbda
chore: clean up Debug.Log 2025-05-17 20:32:43 +02:00
8caca60647
chore(release): v1.0.0-staging.5 2025-05-17 20:29:07 +02:00
becd9c455e
fix: improve Ship 2025-05-17 20:28:15 +02:00
Vincent PETT
699ba78ae4 Merge branch 'develop' of github.com:boudji-ludwig-pett/cnam-geometry-dash into develop 2025-05-17 20:21:50 +02:00
Vincent PETT
c3b8b8526e feat: add StereoMadness part II 2025-05-17 20:21:43 +02:00
b0d4ff9418
Merge branch 'develop' of github.com:boudji-ludwig-pett/cnam-geometry-dash into develop 2025-05-17 19:47:45 +02:00
f4c1ebb83b
fix: buttons scaling edit mode in 1280x720 2025-05-17 19:47:23 +02:00
Djelal BOUDJI
ca831d77f0 feat: manage rotation z on level json 2025-05-17 19:35:35 +02:00
dc442e2acb
fix: add more sound effects + buttons scaling in editor mode 2025-05-17 19:30:14 +02:00
Djelal BOUDJI
9a88fc81ec style: change btn style on choice editor 2025-05-17 18:02:44 +02:00
Djelal BOUDJI
9d1314a75f fix: add corerctly elements on map to edit 2025-05-17 18:02:07 +02:00
Djelal BOUDJI
4992ae9e79 docs: update gantt diagram 2025-05-17 18:00:20 +02:00
bfa28a189f
feat: explosion effect on win and death 2025-05-17 16:04:16 +02:00
b48e17882c
chore: clean up 2025-05-17 15:16:30 +02:00
Djelal BOUDJI
0e70858ce9 fix: use editmode var 2025-05-17 02:25:54 +02:00
Djelal BOUDJI
99c0adbae8 fix: set difficulty chooser to inactive 2025-05-17 02:09:50 +02:00
djelalb
693bcfccec
Feature/add stars renderer (#70)
Co-authored-by: Djelal BOUDJI <djelal@gmail.com>
2025-05-17 02:07:26 +02:00
djelalb
d03e8f7107
Style/change btn style (#69)
Co-authored-by: Djelal BOUDJI <djelal@gmail.com>
2025-05-16 21:36:51 +02:00
djelalb
2290769447
style/change-btn-style (#68)
Co-authored-by: Djelal BOUDJI <djelal@gmail.com>
2025-05-16 21:17:45 +02:00
f8791dfd1b
chore(release): v1.0.0-staging.4 2025-05-16 20:09:58 +02:00
86f64a7705
docs: add instructions to play the game 2025-05-16 20:08:52 +02:00
M VINCENT PETT
728c57c66c
fix: edit a level (#66)
Co-authored-by: Djelal BOUDJI <djelal@gmail.com>
Co-authored-by: Théo LUDWIG <contact@theoludwig.fr>
2025-05-16 20:03:37 +02:00
0b32ce7036
feat: sounds effects (click on button, win and death) (#67) 2025-05-16 19:27:38 +02:00
djelalb
2c7a420f90
fix: export (#65) 2025-05-16 13:19:59 +02:00
M VINCENT PETT
bdd238f524
feat: edit a level (#64) 2025-05-16 13:19:44 +02:00
f818a9a8a7
feat: escape keyboard shortcut to set menu pause (#63) 2025-05-15 18:05:54 +02:00
M VINCENT PETT
3fe6a2998c
fix: map editor design (#61) 2025-05-15 07:13:26 +02:00
bde6ea3a43
feat: init AI (#60) 2025-05-15 07:12:46 +02:00
0263f6b3b0
feat: select levels keyboard shortcuts (next/previous with arrows) (#62) 2025-05-15 07:12:03 +02:00
M VINCENT PETT
7f2db297fa
Map editor design (#59) 2025-05-11 22:30:06 +02:00
94 changed files with 9729 additions and 2383 deletions

View File

@ -11,12 +11,6 @@ permissions:
pull-requests: write
jobs:
lint-commit:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4.2.2"
- uses: "wagoid/commitlint-github-action@v6.2.1"
lint-editorconfig-checker:
runs-on: "ubuntu-latest"
steps:
@ -55,6 +49,7 @@ jobs:
with:
name: build-windows
path: build/
owerwrite: true
build-macos:
runs-on: "ubuntu-latest"
@ -87,6 +82,7 @@ jobs:
with:
name: build-macos
path: build/
owerwrite: true
build-linux:
runs-on: "ubuntu-latest"
@ -119,6 +115,7 @@ jobs:
with:
name: build-linux
path: build/
owerwrite: true
create-release:
needs: [build-windows, build-macos, build-linux]

View File

@ -0,0 +1,80 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3654053280041398781
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4104371471751400115}
- component: {fileID: 1415423667558431683}
m_Layer: 0
m_Name: AICollider
m_TagString: AICollider
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4104371471751400115
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3654053280041398781}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 86.53131, y: 53.261993, z: -5.1268225}
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!61 &1415423667558431683
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3654053280041398781}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 1
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a862ece8e0cd6047ea9e799642c7b31c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -109,6 +109,7 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
>>>>>>> develop
spriteSheet:
serializedVersion: 2
sprites:
@ -147,8 +148,7 @@ TextureImporter:
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
RegularBlock01_0: 229215520534054086
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: afd28cff37c57da4090ac3ddfdb8ee28
guid: 58314e7be35f3201e8f3d376508d5800
TextureImporter:
internalIDToNameTable:
- first:
213: -4781373940957465942
second: exit_0
213: -522367714226421056
second: Save_0
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -97,7 +97,7 @@ TextureImporter:
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@ -113,13 +113,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: exit_0
name: Save_0
rect:
serializedVersion: 2
x: 31
y: 31
width: 298
height: 298
x: 24
y: 23
width: 464
height: 464
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +128,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: aa2bbe6cbb525adb0800000000000000
internalID: -4781373940957465942
spriteID: 0c2c66fd45d20c8f0800000000000000
internalID: -522367714226421056
vertices: []
indices:
edges: []
@ -148,7 +148,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
exit_0: -4781373940957465942
Save_0: -522367714226421056
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -1,10 +1,22 @@
fileFormatVersion: 2
guid: f34830d17508a4b478c164611c202e12
guid: 28e1127a5b69e79449d6eacfb1632438
TextureImporter:
internalIDToNameTable:
- first:
213: 229215520534054086
second: RegularBlock01_0
213: -4579822432219233078
second: cancelBtn_0
- first:
213: -4181939333999132496
second: cancelBtn_1
- first:
213: 8512661480653712572
second: cancelBtn_2
- first:
213: -2543711027167231359
second: cancelBtn_3
- first:
213: 4838270059752062411
second: cancelBtn_4
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -97,7 +109,7 @@ TextureImporter:
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@ -113,13 +125,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: RegularBlock01_0
name: cancelBtn_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 122
height: 122
width: 1536
height: 1024
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +140,96 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 6c4407e2d465e2300800000000000000
internalID: 229215520534054086
spriteID: ac4053943c33170c0800000000000000
internalID: -4579822432219233078
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: cancelBtn_1
rect:
serializedVersion: 2
x: 82
y: 622
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 0b08fb42554c6f5c0800000000000000
internalID: -4181939333999132496
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: cancelBtn_2
rect:
serializedVersion: 2
x: 82
y: 350
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: cbce38fb38c032670800000000000000
internalID: 8512661480653712572
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: cancelBtn_3
rect:
serializedVersion: 2
x: 82
y: 326
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 18204764c4ce2bcd0800000000000000
internalID: -2543711027167231359
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: cancelBtn_4
rect:
serializedVersion: 2
x: 82
y: 94
width: 7
height: 7
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: bcdfdee2cfcf42340800000000000000
internalID: 4838270059752062411
vertices: []
indices:
edges: []
@ -148,7 +248,11 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
RegularBlock01_0: 229215520534054086
cancelBtn_0: -4579822432219233078
cancelBtn_1: -4181939333999132496
cancelBtn_2: 8512661480653712572
cancelBtn_3: -2543711027167231359
cancelBtn_4: 4838270059752062411
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: ada92be653a1d184391ae7f1f61e32bb
guid: a291da95cf123274b9c96368a41731dd
TextureImporter:
internalIDToNameTable:
- first:
213: 4829622404114481491
second: NewLevelButton 1_0
213: -654415992179358624
second: closeBtn_0
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -113,13 +113,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: NewLevelButton 1_0
name: closeBtn_0
rect:
serializedVersion: 2
x: 15
y: 14
width: 483
height: 483
x: 3
y: 32
width: 1019
height: 987
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +128,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 3510384fcf3460340800000000000000
internalID: 4829622404114481491
spriteID: 06480d25f1c0be6f0800000000000000
internalID: -654415992179358624
vertices: []
indices:
edges: []
@ -148,7 +148,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
NewLevelButton 1_0: 4829622404114481491
closeBtn_0: -654415992179358624
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: 0cecb027d0e23fc41b3b3d7c399978c4
TextureImporter:
internalIDToNameTable:
- first:
213: -1609267759769251333
second: createALevelBtn_0
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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: createALevelBtn_0
rect:
serializedVersion: 2
x: 23
y: 88
width: 978
height: 728
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: bf1177eaf7bbaa9e0800000000000000
internalID: -1609267759769251333
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
createALevelBtn_0: -1609267759769251333
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: 4cc2ad05a74922248a49910d3aaa5442
guid: eaa3bde145edde942b542cb709a37416
TextureImporter:
internalIDToNameTable:
- first:
213: 6693083200273925831
second: LevelStatsBtn_0
213: -2153231444099213249
second: editALevelBtn_0
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -97,7 +97,7 @@ TextureImporter:
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@ -113,13 +113,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: LevelStatsBtn_0
name: editALevelBtn_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 512
height: 512
x: 23
y: 207
width: 978
height: 609
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +128,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 7c6467c85bb92ec50800000000000000
internalID: 6693083200273925831
spriteID: f38d34fe86f2e12e0800000000000000
internalID: -2153231444099213249
vertices: []
indices:
edges: []
@ -148,7 +148,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
LevelStatsBtn_0: 6693083200273925831
editALevelBtn_0: -2153231444099213249
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: fa5971280ed90e04cafadbd76400bed2
guid: b53550c59261cea43ba8038fdd102203
TextureImporter:
internalIDToNameTable:
- first:
213: 6385790085498839582
second: BlankSquare_0
213: 9002939317064965793
second: editorBtn_0
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -97,7 +97,7 @@ TextureImporter:
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@ -113,13 +113,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: BlankSquare_0
name: editorBtn_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 512
height: 512
x: 38
y: 88
width: 947
height: 795
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +128,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: e12ae58df32ee9850800000000000000
internalID: 6385790085498839582
spriteID: 1ae1e08fb9dd0fc70800000000000000
internalID: 9002939317064965793
vertices: []
indices:
edges: []
@ -148,7 +148,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
BlankSquare_0: 6385790085498839582
editorBtn_0: 9002939317064965793
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: f3e63de14d549a542a79bff56b230926
TextureImporter:
internalIDToNameTable:
- first:
213: 6669414160430206226
second: importBtn_0
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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: importBtn_0
rect:
serializedVersion: 2
x: 23
y: 88
width: 978
height: 835
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 21d0764c7d48e8c50800000000000000
internalID: 6669414160430206226
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
importBtn_0: 6669414160430206226
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: ea1e3303403fe0b43bebec59c2f55590
TextureImporter:
internalIDToNameTable:
- first:
213: -1409255045544979666
second: importBtn2_0
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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: importBtn2_0
rect:
serializedVersion: 2
x: 17
y: 47
width: 539
height: 343
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: e235d5ca002517ce0800000000000000
internalID: -1409255045544979666
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
importBtn2_0: -1409255045544979666
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: b83b54968fd22ff438fe127c168bebac
guid: 8a60769d8e7b06e4ea5712865d14b809
TextureImporter:
internalIDToNameTable:
- first:
213: 2079131731516339571
second: SaveButton_0
213: -4287216300838241123
second: playBtn_0
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -97,7 +97,7 @@ TextureImporter:
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@ -113,13 +113,13 @@ TextureImporter:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: SaveButton_0
name: playBtn_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 980
height: 982
x: 22
y: 88
width: 979
height: 795
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
@ -128,8 +128,8 @@ TextureImporter:
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 375364a4b4f8adc10800000000000000
internalID: 2079131731516339571
spriteID: d9cb5413d7fb084c0800000000000000
internalID: -4287216300838241123
vertices: []
indices:
edges: []
@ -148,7 +148,7 @@ TextureImporter:
spriteCustomMetadata:
entries: []
nameFileIdTable:
SaveButton_0: 2079131731516339571
playBtn_0: -4287216300838241123
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -0,0 +1,286 @@
fileFormatVersion: 2
guid: fe99c546935fa084e8cbec8b68e3f96e
TextureImporter:
internalIDToNameTable:
- first:
213: -626436719271748831
second: saveBtn_0
- first:
213: -1715996769668828261
second: saveBtn_1
- first:
213: -8850024829547459184
second: saveBtn_2
- first:
213: 9204917831739309651
second: saveBtn_3
- first:
213: -7034966553427437937
second: saveBtn_4
- first:
213: -142403778502646489
second: saveBtn_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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: saveBtn_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 1536
height: 1024
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 12bdb817f137e47f0800000000000000
internalID: -626436719271748831
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: saveBtn_1
rect:
serializedVersion: 2
x: 83
y: 735
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: b93fb2c970e8f28e0800000000000000
internalID: -1715996769668828261
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: saveBtn_2
rect:
serializedVersion: 2
x: 82
y: 622
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 09dcf659e456e2580800000000000000
internalID: -8850024829547459184
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: saveBtn_3
rect:
serializedVersion: 2
x: 81
y: 431
width: 8
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 35efa7b8fff6ebf70800000000000000
internalID: 9204917831739309651
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: saveBtn_4
rect:
serializedVersion: 2
x: 82
y: 350
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: f8614384137ce5e90800000000000000
internalID: -7034966553427437937
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: saveBtn_5
rect:
serializedVersion: 2
x: 82
y: 326
width: 6
height: 6
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 7252da79484160ef0800000000000000
internalID: -142403778502646489
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
saveBtn_0: -626436719271748831
saveBtn_1: -1715996769668828261
saveBtn_2: -8850024829547459184
saveBtn_3: 9204917831739309651
saveBtn_4: -7034966553427437937
saveBtn_5: -142403778502646489
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: fee916e0a10de404a9c3d67602b6e0fd
TextureImporter:
internalIDToNameTable:
- first:
213: 1781407419429470612
second: etoiles_0
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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: etoiles_0
rect:
serializedVersion: 2
x: 111
y: 88
width: 911
height: 835
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 491c6531c94d8b810800000000000000
internalID: 1781407419429470612
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
etoiles_0: 1781407419429470612
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2,18 +2,754 @@
"name": "Back on Track",
"musicName": "BackOnTrack",
"order": 2,
"difficulty": 1,
"elements": [
{
"type": "Spike",
"x": -6.684000015258789,
"y": -2.8970000743865969,
"x": -9.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallSpike",
"x": 2.5999999046325685,
"y": -3.4100000858306886,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": -3.059999942779541,
"y": -2.930000066757202,
"x": 3.4000000953674318,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 11.0,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 11.850000381469727,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 12.850000381469727,
"y": -3.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 14.449999809265137,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 16.0,
"y": -3.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 16.0,
"y": -2.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 17.649999618530275,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 19.049999237060548,
"y": -3.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 19.049999237060548,
"y": -2.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 19.049999237060548,
"y": -1.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 28.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 29.299999237060548,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 35.599998474121097,
"y": -3.0999999046325685,
"scaleX": 1.2000000476837159,
"scaleY": 0.15000000596046449
},
{
"type": "KillZone",
"x": 39.810001373291019,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 44.04999923706055,
"y": -3.0999999046325685,
"scaleX": 1.2000000476837159,
"scaleY": 0.15000000596046449
},
{
"type": "Spike",
"x": 44.099998474121097,
"y": -2.4200000762939455,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 48.25,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 52.45000076293945,
"y": -2.9000000953674318,
"scaleX": 1.2000000476837159,
"scaleY": 0.23000000417232514
},
{
"type": "Spike",
"x": 52.5,
"y": -2.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 58.0,
"y": -1.2000000476837159,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 61.5,
"y": 0.4000000059604645,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 65.0,
"y": 2.0,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 68.5,
"y": 3.5999999046325685,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 72.0,
"y": 5.199999809265137,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 56.38999938964844,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 58.22999954223633,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 60.0,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 61.0,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 62.79999923706055,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 64.5999984741211,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 66.5999984741211,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 68.19999694824219,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 69.9000015258789,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 71.69999694824219,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 73.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "ObstacleBlock",
"x": 81.94000244140625,
"y": 0.5199999809265137,
"scaleX": 3.0,
"scaleY": 1.559999942779541
},
{
"type": "ObstacleBlock",
"x": 97.30999755859375,
"y": 0.03999999910593033,
"scaleX": 3.0,
"scaleY": 1.3799999952316285
},
{
"type": "ObstacleBlock",
"x": 112.66999816894531,
"y": 0.5199999809265137,
"scaleX": 3.0,
"scaleY": 1.559999942779541
},
{
"type": "ObstacleBlock",
"x": 128.0500030517578,
"y": -0.6499999761581421,
"scaleX": 3.0,
"scaleY": 1.1100000143051148
},
{
"type": "Spike",
"x": 77.6500015258789,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 78.44999694824219,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 79.30999755859375,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 80.16000366210938,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 84.4800033569336,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 85.2699966430664,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 86.16000366210938,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 86.94999694824219,
"y": 4.829999923706055,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 95.87000274658203,
"y": 5.75,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 96.68000030517578,
"y": 5.75,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 97.5199966430664,
"y": 5.75,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 98.36000061035156,
"y": 5.75,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 78.54000091552735,
"y": 5.900000095367432,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 79.56999969482422,
"y": 5.900000095367432,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 85.33999633789063,
"y": 5.900000095367432,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 86.36000061035156,
"y": 5.900000095367432,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 95.8499984741211,
"y": 5.179999828338623,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 96.68000030517578,
"y": 5.179999828338623,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 97.5199966430664,
"y": 5.179999828338623,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 98.36000061035156,
"y": 5.179999828338623,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 119.94999694824219,
"y": 4.860000133514404,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "Spike",
"x": 120.87000274658203,
"y": 2.509999990463257,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 136.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 138.1999969482422,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 139.89999389648438,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 141.60000610351563,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 143.3000030517578,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 145.0,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 146.6999969482422,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 148.39999389648438,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 150.10000610351563,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 151.8000030517578,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 153.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 155.1999969482422,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 156.89999389648438,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 158.60000610351563,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 160.3000030517578,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 162.0,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 163.6999969482422,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 165.39999389648438,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 167.10000610351563,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 168.8000030517578,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "KillZone",
"x": 170.5,
"y": -3.200000047683716,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 138.5,
"y": 2.0399999618530275,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 139.33999633789063,
"y": 2.0399999618530275,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 140.17999267578126,
"y": 2.0399999618530275,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 141.02000427246095,
"y": 2.0399999618530275,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 143.3000030517578,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 144.13999938964845,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 144.97999572753907,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 145.82000732421876,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 146.66000366210938,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 147.5,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 148.33999633789063,
"y": 0.8899999856948853,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 150.4199981689453,
"y": -0.3100000023841858,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 151.25,
"y": -0.3100000023841858,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 151.0800018310547,
"y": -0.3100000023841858,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 152.91000366210938,
"y": -0.3100000023841858,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 153.74000549316407,
"y": -0.3100000023841858,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 156.6999969482422,
"y": 1.2999999523162842,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 160.1999969482422,
"y": 2.9000000953674318,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 163.8000030517578,
"y": 4.5,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 167.3000030517578,
"y": 6.099999904632568,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 170.8000030517578,
"y": 7.699999809265137,
"scaleX": -1.0,
"scaleY": -1.0
},
{
"type": "SmallObstacleBlock",
"x": 174.3000030517578,
"y": 9.300000190734864,
"scaleX": -1.0,
"scaleY": -1.0
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: bb33a1422640593caba3c9cfc277eed1
TextureImporter:
internalIDToNameTable:
- first:
213: -9192638271177797499
second: death_0
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: 1
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: 100
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: 1
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: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: death_0
rect:
serializedVersion: 2
x: 50
y: 42
width: 118
height: 118
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 58059c172303d6080800000000000000
internalID: -9192638271177797499
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
death_0: -9192638271177797499
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1f762bc8c54d24bc38a9c08ae37e1861
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 0f783190ab25e24deb41c3810d8bd910
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: a534a6e5c2588e8468f392da95b4d051
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 01bc19d23f018f986bec98d64fb0c51b
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@ -149,14 +149,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1027243870}
m_Children: []
m_Father: {fileID: 585327055}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -160, y: 0}
m_SizeDelta: {x: 185, y: 40}
m_AnchoredPosition: {x: -161, y: 0}
m_SizeDelta: {x: 170, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &323428364
MonoBehaviour:
@ -202,9 +201,9 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 0}
- m_Target: {fileID: 1858033414}
m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
m_MethodName: OpenImport
m_MethodName: EditLevel
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@ -234,8 +233,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: -2153231444099213249, guid: eaa3bde145edde942b542cb709a37416, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -408,6 +407,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ef2acea012085a3bb9a981fc334afaec, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 1895261020}
--- !u!114 &681324524
MonoBehaviour:
m_ObjectHideFlags: 0
@ -502,278 +502,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 681324521}
m_CullTransparentMesh: 1
--- !u!1 &1027243869
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1027243870}
- component: {fileID: 1027243872}
- component: {fileID: 1027243871}
m_Layer: 5
m_Name: EditLevelText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1027243870
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1027243869}
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: 323428363}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1027243871
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1027243869}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Edit a level
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &1027243872
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1027243869}
m_CullTransparentMesh: 1
--- !u!1 &1040235959
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1040235960}
- component: {fileID: 1040235962}
- component: {fileID: 1040235961}
m_Layer: 5
m_Name: CreateLevelText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1040235960
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040235959}
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: 1200117237}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1040235961
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040235959}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Create a level
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &1040235962
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1040235959}
m_CullTransparentMesh: 1
--- !u!1 &1200117236
GameObject:
m_ObjectHideFlags: 0
@ -804,14 +532,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1040235960}
m_Children: []
m_Father: {fileID: 585327055}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 160, y: 0}
m_SizeDelta: {x: 185, y: 40}
m_AnchoredPosition: {x: 160, y: -10}
m_SizeDelta: {x: 180, y: 120}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1200117238
MonoBehaviour:
@ -859,7 +586,7 @@ MonoBehaviour:
m_Calls:
- m_Target: {fileID: 1858033414}
m_TargetAssemblyTypeName: MainMenu, Assembly-CSharp
m_MethodName: LevelEditor
m_MethodName: CreateVoidLevel
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@ -889,8 +616,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: -1609267759769251333, guid: 0cecb027d0e23fc41b3b3d7c399978c4, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -1087,6 +814,136 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a1cd6b406f139414086355a222af717e, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 1895261020}
--- !u!1 &1895261019
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1895261021}
- component: {fileID: 1895261020}
m_Layer: 0
m_Name: Sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!82 &1895261020
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1895261019}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!4 &1895261021
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1895261019}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 513.29504, y: 455.8944, z: -2.436951}
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 &1985937862
GameObject:
m_ObjectHideFlags: 0
@ -1173,3 +1030,4 @@ SceneRoots:
- {fileID: 1858033413}
- {fileID: 585327055}
- {fileID: 1985937865}
- {fileID: 1895261021}

View File

@ -149,14 +149,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 164913377}
m_Children: []
m_Father: {fileID: 481473977}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 8.3, y: -154.1}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: 0, y: -175}
m_SizeDelta: {x: 160, y: 110}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &39408930
MonoBehaviour:
@ -234,8 +233,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: 9002939317064965793, guid: b53550c59261cea43ba8038fdd102203, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -252,142 +251,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 39408928}
m_CullTransparentMesh: 1
--- !u!1 &164913376
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 164913377}
- component: {fileID: 164913379}
- component: {fileID: 164913378}
m_Layer: 5
m_Name: EditorText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &164913377
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 164913376}
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: 39408929}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &164913378
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 164913376}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Editor
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &164913379
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 164913376}
m_CullTransparentMesh: 1
--- !u!1 &303285652
GameObject:
m_ObjectHideFlags: 0
@ -463,6 +326,135 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303285652}
m_CullTransparentMesh: 1
--- !u!1 &376463333
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 376463335}
- component: {fileID: 376463334}
m_Layer: 0
m_Name: Sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!82 &376463334
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 376463333}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!4 &376463335
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 376463333}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 591.1148, y: 374.54196, z: 17.932013}
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 &481473973
GameObject:
m_ObjectHideFlags: 0
@ -600,14 +592,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1899869499}
m_Children: []
m_Father: {fileID: 481473977}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 8.3, y: -95.7}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: 0, y: -105}
m_SizeDelta: {x: 160, y: 110}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &666344589
MonoBehaviour:
@ -685,8 +676,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: 6669414160430206226, guid: f3e63de14d549a542a79bff56b230926, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -737,7 +728,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 8.3, y: 82.4}
m_AnchoredPosition: {x: 0, y: 85}
m_SizeDelta: {x: 206.4181, y: 202.9899}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &780585406
@ -857,142 +848,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &997659732
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 997659733}
- component: {fileID: 997659735}
- component: {fileID: 997659734}
m_Layer: 5
m_Name: PlayText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &997659733
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997659732}
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: 1587889808}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &997659734
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997659732}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Play
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &997659735
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 997659732}
m_CullTransparentMesh: 1
--- !u!1 &1587889807
GameObject:
m_ObjectHideFlags: 0
@ -1023,14 +878,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 997659733}
m_Children: []
m_Father: {fileID: 481473977}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 8.3, y: -40.7}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: 0, y: -40}
m_SizeDelta: {x: 160, y: 110}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1587889809
MonoBehaviour:
@ -1108,8 +962,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: -4287216300838241123, guid: 8a60769d8e7b06e4ea5712865d14b809, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -1292,6 +1146,7 @@ MonoBehaviour:
name:
musicName:
order: 0
difficulty: 0
elements: []
--- !u!4 &1832520163
Transform:
@ -1413,142 +1268,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a1cd6b406f139414086355a222af717e, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1899869498
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1899869499}
- component: {fileID: 1899869501}
- component: {fileID: 1899869500}
m_Layer: 5
m_Name: ImportText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1899869499
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1899869498}
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: 666344588}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1899869500
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1899869498}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Import
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &1899869501
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1899869498}
m_CullTransparentMesh: 1
sfxSource: {fileID: 376463334}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@ -1557,3 +1277,4 @@ SceneRoots:
- {fileID: 481473977}
- {fileID: 948896768}
- {fileID: 1832520163}
- {fileID: 376463335}

View File

@ -154,7 +154,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 84.74307, y: 105.52587}
m_AnchoredPosition: {x: 63, y: 48}
m_SizeDelta: {x: 29.4862, y: 43.7482}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &77506302
@ -348,142 +348,6 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &244257726
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 244257727}
- component: {fileID: 244257729}
- component: {fileID: 244257728}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &244257727
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 244257726}
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: 885044259}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &244257728
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 244257726}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Import
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &244257729
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 244257726}
m_CullTransparentMesh: 1
--- !u!1 &773247538
GameObject:
m_ObjectHideFlags: 0
@ -682,14 +546,13 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 244257727}
m_Children: []
m_Father: {fileID: 1442014941}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 36.861893}
m_SizeDelta: {x: 160, y: 30}
m_AnchoredPosition: {x: -21.743084, y: -20.66397}
m_SizeDelta: {x: 170, y: 90}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &885044260
MonoBehaviour:
@ -780,8 +643,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: -1409255045544979666, guid: ea1e3303403fe0b43bebec59c2f55590, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -849,6 +712,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ef2acea012085a3bb9a981fc334afaec, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 1646124753}
--- !u!114 &955286180
MonoBehaviour:
m_ObjectHideFlags: 0
@ -1048,6 +912,135 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &1646124752
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1646124754}
- component: {fileID: 1646124753}
m_Layer: 0
m_Name: Sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!82 &1646124753
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1646124752}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!4 &1646124754
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1646124752}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 513.29504, y: 455.8944, z: -2.436951}
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
@ -1055,3 +1048,4 @@ SceneRoots:
- {fileID: 837005990}
- {fileID: 1442014941}
- {fileID: 162069549}
- {fileID: 1646124754}

File diff suppressed because it is too large Load Diff

View File

@ -222,63 +222,81 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1001 &109370708
PrefabInstance:
--- !u!1 &99686832
GameObject:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1771296619209216840, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_Name
value: BonusSlowSpeed
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalPosition.x
value: -5.4423084
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalPosition.y
value: -2.783749
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6543394447596783970, guid: e9dda45aef9258745a40efb48437d584, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e9dda45aef9258745a40efb48437d584, type: 3}
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 99686833}
- component: {fileID: 99686835}
- component: {fileID: 99686834}
m_Layer: 5
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &99686833
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 99686832}
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: 295909703}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 36.9547, y: 33.6365}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &99686834
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 99686832}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &99686835
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 99686832}
m_CullTransparentMesh: 1
--- !u!1 &245275147
GameObject:
m_ObjectHideFlags: 0
@ -358,6 +376,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 245275147}
m_CullTransparentMesh: 1
--- !u!1 &295909702
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 295909703}
- component: {fileID: 295909705}
- component: {fileID: 295909704}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &295909703
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 295909702}
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: 99686833}
m_Father: {fileID: 2145558729}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 49.9975, y: 40.9}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &295909704
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 295909702}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &295909705
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 295909702}
m_CullTransparentMesh: 1
--- !u!1 &487176671
GameObject:
m_ObjectHideFlags: 0
@ -434,6 +528,67 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 487176671}
m_CullTransparentMesh: 1
--- !u!1001 &496264820
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3025146551836412649, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_Name
value: BonusBoostSpeed
objectReference: {fileID: 0}
- target: {fileID: 3025146551836412649, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalPosition.x
value: -2
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalPosition.y
value: -2.88
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalRotation.w
value: 0.99681437
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalRotation.z
value: -0.079757296
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7134261581051338486, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: -9.149
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5d01d2d55c6c25541b0db90186e76c2b, type: 3}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@ -5828,6 +5983,8 @@ RectTransform:
- {fileID: 1269654000}
- {fileID: 1464555240}
- {fileID: 6776933}
- {fileID: 2145558729}
- {fileID: 2049642316}
m_Father: {fileID: 1371294550}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@ -5850,6 +6007,7 @@ MonoBehaviour:
pauseMenu: {fileID: 892725781}
pauseButton: {fileID: 1038445495}
levelLoader: {fileID: 1999482186}
sfxSource: {fileID: 1247869546}
volumeSlider: {fileID: 6776934}
--- !u!1 &988798827
GameObject:
@ -6275,6 +6433,135 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1247869545
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1247869547}
- component: {fileID: 1247869546}
m_Layer: 0
m_Name: Sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!82 &1247869546
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1247869545}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!4 &1247869547
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1247869545}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 8.485552, y: 2.2081068, z: -0.13737443}
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 &1267397455
GameObject:
m_ObjectHideFlags: 0
@ -6405,6 +6692,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ebe0bd74200510d4aa75c327a76499c6, type: 3}
m_Name:
m_EditorClassIdentifier:
pauseMenu: {fileID: 892725783}
sfxSource: {fileID: 1247869546}
SpeedMultiplier: 1
--- !u!61 &1267397460
BoxCollider2D:
@ -7316,7 +7605,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
levelsLoader: {fileID: 0}
audioSource: {fileID: 1999482188}
editMode: 0
createMode: 0
musicSource: {fileID: 1999482188}
progressionText: {fileID: 245275149}
--- !u!4 &1999482187
Transform:
@ -7465,6 +7756,197 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2049642315
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2049642316}
- component: {fileID: 2049642318}
- component: {fileID: 2049642317}
m_Layer: 0
m_Name: AI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2049642316
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2049642315}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -2.9565992}
m_LocalScale: {x: 0.4166666, y: 0.4166666, z: 0.4166666}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 892725782}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -377, y: -274}
m_SizeDelta: {x: 87.0508, y: 79.9371}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2049642317
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2049642315}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3}
m_FontSize: 56
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 56
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: AI
--- !u!222 &2049642318
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2049642315}
m_CullTransparentMesh: 1
--- !u!1 &2145558728
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2145558729}
- component: {fileID: 2145558730}
- component: {fileID: 2145558731}
m_Layer: 5
m_Name: CheckboxAI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2145558729
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2145558728}
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: 295909703}
m_Father: {fileID: 892725782}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -424.55, y: -273.6}
m_SizeDelta: {x: 60.1819, y: 50.9705}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2145558730
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2145558728}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 295909704}
toggleTransition: 1
graphic: {fileID: 99686834}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2145558731}
m_TargetAssemblyTypeName: AI, Assembly-CSharp
m_MethodName: OnAiChange
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_IsOn: 0
--- !u!114 &2145558731
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2145558728}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b63079a9773c036389c5b87c12e728c3, type: 3}
m_Name:
m_EditorClassIdentifier:
AIToggle: {fileID: 0}
player: {fileID: 1267397459}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@ -7475,4 +7957,5 @@ SceneRoots:
- {fileID: 1371294550}
- {fileID: 521952202}
- {fileID: 555497623}
- {fileID: 109370708}
- {fileID: 496264820}
- {fileID: 1247869547}

View File

@ -300,7 +300,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -0.000013351, y: -98.7}
m_AnchoredPosition: {x: 3.6, y: -182.2}
m_SizeDelta: {x: 629.6868, y: 98.2373}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &92159576
@ -438,6 +438,192 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &334972165
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 334972166}
- component: {fileID: 334972167}
m_Layer: 5
m_Name: Sound
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &334972166
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 334972165}
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: 1153106989}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!82 &334972167
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 334972165}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &407660540
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 407660541}
- component: {fileID: 407660542}
m_Layer: 5
m_Name: StarsManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &407660541
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 407660540}
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: 760835823}
m_Father: {fileID: 1153106989}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &407660542
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 407660540}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 443f905013127a44f9c3dcf5a8fed74b, type: 3}
m_Name:
m_EditorClassIdentifier:
starTemplate: {fileID: 1331855743}
starsContainer: {fileID: 760835823}
levelsLoader: {fileID: 0}
extraPadding: 10
--- !u!1 &633505916
GameObject:
m_ObjectHideFlags: 0
@ -548,7 +734,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -22.8, y: -49.119}
m_AnchoredPosition: {x: 3.6, y: -135.3}
m_SizeDelta: {x: 629.6868, y: 98.2373}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &760653960
@ -607,6 +793,42 @@ MonoBehaviour:
m_EditorClassIdentifier:
levelTotalAttemptsText: {fileID: 760653960}
levelsLoader: {fileID: 0}
--- !u!1 &760835822
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 760835823}
m_Layer: 5
m_Name: StarsContainer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &760835823
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 760835822}
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: 1331855742}
m_Father: {fileID: 407660541}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -41}
m_SizeDelta: {x: 375, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &954359120
GameObject:
m_ObjectHideFlags: 0
@ -846,6 +1068,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2c53cba3260b30d02b79e69a3198546c, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 334972167}
levelsLoader: {fileID: 0}
--- !u!1 &1099679056
GameObject:
@ -992,6 +1215,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ef2acea012085a3bb9a981fc334afaec, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 334972167}
--- !u!1 &1153106988
GameObject:
m_ObjectHideFlags: 0
@ -1031,6 +1255,8 @@ RectTransform:
- {fileID: 760653959}
- {fileID: 92159575}
- {fileID: 1571276505}
- {fileID: 334972166}
- {fileID: 407660541}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@ -1101,6 +1327,81 @@ Canvas:
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!1 &1331855741
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1331855742}
- component: {fileID: 1331855744}
- component: {fileID: 1331855743}
m_Layer: 5
m_Name: star
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1331855742
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1331855741}
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: 760835823}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 40, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1331855743
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1331855741}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 1781407419429470612, guid: fee916e0a10de404a9c3d67602b6e0fd, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1331855744
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1331855741}
m_CullTransparentMesh: 1
--- !u!1 &1364527281
GameObject:
m_ObjectHideFlags: 0
@ -1246,6 +1547,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c34ef065650ba0802be580828cc0d474, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 334972167}
levelsLoader: {fileID: 0}
--- !u!1 &1571276504
GameObject:
@ -1282,7 +1584,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -52.318, y: -147.36}
m_AnchoredPosition: {x: 3.6, y: -95.2}
m_SizeDelta: {x: 629.6868, y: 98.2373}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1571276506
@ -1372,6 +1674,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a1cd6b406f139414086355a222af717e, type: 3}
m_Name:
m_EditorClassIdentifier:
sfxSource: {fileID: 0}
--- !u!81 &1975177173
AudioListener:
m_ObjectHideFlags: 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2fabb6c6015f46541a57baf21011fa51
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,19 @@
using UnityEngine;
using UnityEngine.UI;
public class AI : MonoBehaviour
{
public Toggle AIToggle;
public Player player;
public void OnAiChange()
{
player.IsAI = AIToggle.isOn;
}
public void Awake()
{
AIToggle = GetComponent<Toggle>();
AIToggle.isOn = player.IsAI;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b63079a9773c036389c5b87c12e728c3

View File

@ -5,4 +5,6 @@ public interface IGameMode
void Update(Player player);
void OnCollisionEnter(Player player, Collision2D collision);
void OnCollisionExit(Player player, Collision2D collision);
void Jump(Player player);
}

View File

@ -1,6 +1,4 @@
using UnityEngine;
using UnityEngine.SceneManagement;
public class NormalGameMode : IGameMode
{
@ -15,7 +13,6 @@ public class NormalGameMode : IGameMode
{
player.RigidBody.linearVelocity = new Vector2(HorizontalSpeed * player.SpeedMultiplier, player.RigidBody.linearVelocity.y);
if (player.IsColliding && Input.GetKey(JumpKey) && !isRotating)
{
Jump(player);
@ -38,7 +35,7 @@ public class NormalGameMode : IGameMode
UpdateParticlePositionAndRotation(player);
}
private void Jump(Player player)
public void Jump(Player player)
{
player.RigidBody.linearVelocity = new Vector2(player.RigidBody.linearVelocity.x, 0);
player.RigidBody.AddForce(Vector2.up * JumpForce, ForceMode2D.Impulse);
@ -86,16 +83,6 @@ public class NormalGameMode : IGameMode
public void OnCollisionEnter(Player player, Collision2D collision)
{
player.IsColliding = true;
if (collision.gameObject.CompareTag("Kill"))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
if (collision.gameObject.CompareTag("Win"))
{
SceneManager.LoadScene("SelectLevelScene");
}
}
public void OnCollisionExit(Player player, Collision2D collision)

View File

@ -1,3 +1,4 @@
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
@ -6,9 +7,9 @@ public class ShipGameMode : IGameMode
private const float HorizontalSpeed = 8.6f;
private const float JumpForce = 26.6581f;
private const KeyCode JumpKey = KeyCode.Space;
private const float UpperAngle = 45f;
private const float LowerAngle = -45f;
private const float RotationTransitionDuration = 0.5f;
private const float MaxAscentAngle = 45f;
private const float MaxDescentAngle = -45f;
private const float RotationSpeed = 360f;
public void Update(Player player)
{
@ -19,25 +20,27 @@ public class ShipGameMode : IGameMode
if (jumpPressed)
{
Jump(player);
}
if (Input.GetKeyDown(JumpKey))
float targetAngle;
if (player.RigidBody.linearVelocity.y > 0.1f)
{
player.Transform.rotation = Quaternion.Euler(0, 0, UpperAngle);
float velocityLerp = Mathf.Clamp01(player.RigidBody.linearVelocity.y / JumpForce);
targetAngle = Mathf.Lerp(0f, MaxAscentAngle, velocityLerp);
}
else if (player.RigidBody.linearVelocity.y < -0.1f)
{
float velocityLerp = Mathf.Clamp01(Mathf.Abs(player.RigidBody.linearVelocity.y) / 20f);
targetAngle = Mathf.Lerp(0f, MaxDescentAngle, velocityLerp);
}
else
{
player.Transform.rotation = Quaternion.Euler(0, 0, UpperAngle);
targetAngle = 0f;
}
}
else
{
float currentAngle = GetCurrentZAngle(player);
float t = Mathf.Clamp01(Time.deltaTime / RotationTransitionDuration);
float interpolationFactor = Mathf.Sin(t * (Mathf.PI / 2));
float newAngle = Mathf.Lerp(currentAngle, LowerAngle, interpolationFactor);
float newAngle = Mathf.MoveTowardsAngle(currentAngle, targetAngle, RotationSpeed * Time.deltaTime);
player.Transform.rotation = Quaternion.Euler(0, 0, newAngle);
}
if (player.Particle.gameObject.activeSelf)
{
@ -55,7 +58,9 @@ public class ShipGameMode : IGameMode
return angle;
}
private void Jump(Player player)
public void Jump(Player player)
{
if (player.RigidBody.linearVelocity.y <= 0.1f)
{
player.RigidBody.linearVelocity = new Vector2(player.RigidBody.linearVelocity.x, 0);
player.RigidBody.AddForce(Vector2.up * JumpForce, ForceMode2D.Impulse);
@ -64,23 +69,12 @@ public class ShipGameMode : IGameMode
player.LevelsLoader.IncreaseTotalJumps();
}
}
}
public void OnCollisionEnter(Player player, Collision2D collision)
{
if (collision.gameObject.CompareTag("Kill"))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
return;
}
if (collision.gameObject.CompareTag("Win"))
{
SceneManager.LoadScene("HomeScene");
return;
}
float currentAngle = GetCurrentZAngle(player);
float shortestAngle = Mathf.DeltaAngle(currentAngle, 0);
player.Transform.rotation = Quaternion.RotateTowards(player.Transform.rotation, Quaternion.Euler(0, 0, 0), Mathf.Abs(shortestAngle));
float snappedAngle = 0f;
player.Transform.rotation = Quaternion.Euler(0, 0, snappedAngle);
}
public void OnCollisionExit(Player player, Collision2D collision)

View File

@ -5,12 +5,18 @@ using System.Collections.Generic;
using SimpleFileBrowser;
using TMPro;
#if UNITY_EDITOR
using UnityEditor;
#endif
[RequireComponent(typeof(LevelEditor))]
public class JSONExporter : MonoBehaviour
{
public TMP_Text statusText;
public int difficultyToExport = 1;
private LevelEditor editor;
private string levelsFolder;
private string assetFolderPath;
private void Awake()
{
@ -19,6 +25,8 @@ public class JSONExporter : MonoBehaviour
if (!Directory.Exists(levelsFolder))
Directory.CreateDirectory(levelsFolder);
assetFolderPath = "Assets/Resources/Levels";
if (statusText == null)
{
var statusObj = GameObject.Find("StatusText");
@ -76,7 +84,8 @@ public class JSONExporter : MonoBehaviour
x = Mathf.Round(pos.x * 100f) / 100f,
y = Mathf.Round(pos.y * 100f) / 100f,
scaleX = Mathf.Round(scale.x * 100f) / 100f,
scaleY = Mathf.Round(scale.y * 100f) / 100f
scaleY = Mathf.Round(scale.y * 100f) / 100f,
rotationZ = Mathf.Round(go.transform.rotation.eulerAngles.z * 100f) / 100f
});
}
@ -91,6 +100,7 @@ public class JSONExporter : MonoBehaviour
name = fileName,
musicName = "",
order = 0,
difficulty = difficultyToExport,
elements = elements.ToArray()
};
string json = JsonUtility.ToJson(data, prettyPrint: true);
@ -98,42 +108,39 @@ public class JSONExporter : MonoBehaviour
try
{
File.WriteAllText(destPath, json);
SetStatus("Export successful: " + fileName + ".json", Color.green);
SetStatus($"Export successful: {fileName}.json (diff {difficultyToExport})", Color.green);
}
catch (System.Exception e)
{
Debug.LogError("Export error: " + e);
SetStatus("Export error. See console.", Color.red);
yield break;
}
#if UNITY_EDITOR
UnityEditor.AssetDatabase.Refresh();
string assetPath = Path.Combine(assetFolderPath, fileName + ".json");
AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate);
#endif
var loader = Object.FindAnyObjectByType<LevelsLoader>();
if (loader != null)
loader.RefreshLevels();
var loader = FindObjectOfType<LevelsLoader>();
loader?.RefreshLevels();
}
private void SetStatus(string message, Color color)
{
if (statusText != null)
{
if (statusText == null) return;
statusText.text = message;
statusText.color = color;
statusText.gameObject.SetActive(false);
statusText.gameObject.SetActive(true);
Canvas.ForceUpdateCanvases();
}
}
[System.Serializable]
private class SerializableElement
{
public string type;
public float x;
public float y;
public float scaleX;
public float scaleY;
public float x, y, scaleX, scaleY, rotationZ;
}
[System.Serializable]
@ -142,6 +149,7 @@ public class JSONExporter : MonoBehaviour
public string name;
public string musicName;
public int order;
public int difficulty;
public SerializableElement[] elements;
}
}

View File

@ -0,0 +1,153 @@
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using SimpleFileBrowser;
using TMPro;
[System.Serializable]
public class BlockData
{
public string prefabName;
public Vector3 position;
public float rotationZ;
public Vector3 scale;
}
[System.Serializable]
public class LevelData
{
public string levelName;
public List<BlockData> blocks = new List<BlockData>();
}
public class JSONLevelEditor : MonoBehaviour
{
[Header("UI")]
public TMP_Dropdown levelDropdown;
public Button loadButton;
public Button saveButton;
public TMP_Text statusText;
[Header("Editor")]
public Transform editRoot; // où on instancie les blocs
public List<GameObject> blockPrefabs; // à remplir dans linspecteur (mêmes noms que dans JSON)
private LevelData currentLevel;
private string currentJsonPath;
private void Start()
{
// Remplir la dropdown avec les JSON disponibles dans Resources/Levels
var assets = Resources.LoadAll<TextAsset>("Levels");
levelDropdown.options.Clear();
foreach (var txt in assets)
levelDropdown.options.Add(new TMP_Dropdown.OptionData(txt.name));
levelDropdown.RefreshShownValue();
loadButton.onClick.AddListener(OnLoadClicked);
saveButton.onClick.AddListener(OnSaveClicked);
UpdateStatus("Prêt.", Color.white);
}
private void OnLoadClicked()
{
string lvlName = levelDropdown.options[levelDropdown.value].text;
TextAsset json = Resources.Load<TextAsset>($"Levels/{lvlName}");
if (json == null)
{
UpdateStatus($"Niveau '{lvlName}' introuvable.", Color.red);
return;
}
currentJsonPath = Path.Combine(Application.dataPath, "Resources/Levels", lvlName + ".json");
currentLevel = JsonUtility.FromJson<LevelData>(json.text);
if (currentLevel == null)
{
UpdateStatus("Impossible de parser le JSON.", Color.red);
return;
}
ClearEditRoot();
foreach (var bd in currentLevel.blocks)
{
var prefab = blockPrefabs.Find(p => p.name == bd.prefabName);
if (prefab == null) continue;
var go = Instantiate(prefab, editRoot);
go.transform.localPosition = bd.position;
go.transform.localEulerAngles = new Vector3(0, 0, bd.rotationZ);
go.transform.localScale = bd.scale;
// vous pouvez ajouter un script pour manipuler ce 'go' dans léditeur
}
UpdateStatus($"Niveau '{lvlName}' chargé.", Color.green);
}
private void OnSaveClicked()
{
if (currentLevel == null)
{
UpdateStatus("Aucun niveau chargé.", Color.red);
return;
}
// Reconstruire le LevelData depuis les enfants de editRoot
currentLevel.blocks.Clear();
foreach (Transform child in editRoot)
{
var bd = new BlockData
{
prefabName = child.name.Replace("(Clone)", ""),
position = child.localPosition,
rotationZ = child.localEulerAngles.z,
scale = child.localScale
};
currentLevel.blocks.Add(bd);
}
// Demande path de sauvegarde
StartCoroutine(DoSaveDialog());
}
private IEnumerator DoSaveDialog()
{
yield return FileBrowser.WaitForSaveDialog(
FileBrowser.PickMode.Files, false, null, "json",
"Save JSON", "Save");
if (!FileBrowser.Success)
{
UpdateStatus("Sauvegarde annulée.", Color.red);
yield break;
}
string dest = FileBrowser.Result[0];
if (!dest.EndsWith(".json")) dest += ".json";
string jsonText = JsonUtility.ToJson(currentLevel, true);
try
{
File.WriteAllText(dest, jsonText);
UpdateStatus($"Sauvegardé : {dest}", Color.green);
}
catch (System.Exception e)
{
Debug.LogError(e);
UpdateStatus("Erreur lors de la sauvegarde.", Color.red);
}
}
private void ClearEditRoot()
{
for (int i = editRoot.childCount - 1; i >= 0; i--)
DestroyImmediate(editRoot.GetChild(i).gameObject);
}
private void UpdateStatus(string msg, Color col)
{
if (statusText == null) return;
statusText.text = msg;
statusText.color = col;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4a995a69086a0184d830aa300b3c2843

View File

@ -11,6 +11,7 @@ public class LevelElement
public float y;
public float scaleX = -1;
public float scaleY = -1;
public float rotationZ = 0;
}
[System.Serializable]
@ -26,6 +27,7 @@ public class Level
public string name;
public string musicName;
public int order;
public int difficulty;
public List<LevelElement> elements;

View File

@ -1,5 +1,6 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
public class LevelEditor : MonoBehaviour
@ -7,7 +8,7 @@ public class LevelEditor : MonoBehaviour
[Header("Placement")]
private GameObject currentBlock;
private bool isPlacingBlock = false;
private Vector3 currentScale = new Vector3(1f, 1f, 1);
private Vector3 currentScale = Vector3.one;
private float scaleStep = 0.1f;
[Header("UI")]
@ -27,251 +28,393 @@ public class LevelEditor : MonoBehaviour
private enum ResizeAxis { None, Horizontal, Vertical }
private ResizeAxis currentResizeAxis = ResizeAxis.None;
private Transform persistentBlockContainer;
void Start()
{
persistentBlockContainer = new GameObject("PlacedBlocks").transform;
DontDestroyOnLoad(persistentBlockContainer.gameObject);
LoadPrefabs();
GenerateButtons();
}
void Update()
{
if (IsPointerOverUI()) return;
if (isPlacingBlock && currentBlock != null)
HandleBlockPlacement();
else
HandleBlockSelection();
HandleBlockResizing();
HandleBlockDeletion();
}
void OnDestroy()
{
ClearEditor();
}
#region UI
void LoadPrefabs()
{
blockPrefabs.AddRange(Resources.LoadAll<GameObject>("Prefabs"));
var all = Resources.LoadAll<GameObject>("Prefabs");
blockPrefabs.Clear();
foreach (var prefab in all)
{
var name = prefab.name.ToLower();
if (name == "ground" || name == "winnerwall") continue;
blockPrefabs.Add(prefab);
}
}
void GenerateButtons()
{
if (buttonPrefabTemplate == null)
{
Debug.LogError("LevelEditor.GenerateButtons(): buttonPrefabTemplate nest pas assigné !");
return;
}
if (blockGroupContainer == null)
{
Debug.LogError("LevelEditor.GenerateButtons(): blockGroupContainer nest pas assigné !");
return;
}
ClearCurrentButtons();
Transform container = blockGroupContainer;
if (container == null || buttonPrefabTemplate == null)
if (blockGroupContainer == null || buttonPrefabTemplate == null)
{
Debug.LogError("UI Container ou prefab de bouton manquant.");
Debug.LogError("UI Container ou prefab manquant.");
return;
}
int start = currentPage * buttonsPerPage;
int end = Mathf.Min(start + buttonsPerPage, blockPrefabs.Count);
for (int i = start; i < end; i++)
{
GameObject button = Instantiate(buttonPrefabTemplate, container);
button.SetActive(true);
var btn = Instantiate(buttonPrefabTemplate, blockGroupContainer);
btn.SetActive(true);
SetupButtonVisual(btn.transform, blockPrefabs[i], i - start);
var prefab = blockPrefabs[i];
btn.GetComponent<Button>().onClick.AddListener(() => SelectPrefab(prefab));
currentButtons.Add(btn);
}
}
Transform canvas = button.transform.Find("Canvas");
Transform bg = canvas?.Find("BlankSquare");
Transform icon = canvas?.Find("PrefabIcon");
if (bg == null || icon == null)
void SetupButtonVisual(Transform t, GameObject prefab, int idx)
{
Destroy(button);
continue;
}
float xOffset = -375f + (i - start) * 125f;
bg.GetComponent<RectTransform>().anchoredPosition = new Vector2(xOffset, bg.GetComponent<RectTransform>().anchoredPosition.y);
icon.GetComponent<RectTransform>().anchoredPosition = new Vector2(xOffset, icon.GetComponent<RectTransform>().anchoredPosition.y);
Image bgImage = bg.GetComponent<Image>();
Image iconImage = icon.GetComponent<Image>();
bgImage.sprite = Resources.Load<Sprite>("InGame/ButtonSkin/BlankSquare");
iconImage.sprite = blockPrefabs[i].GetComponent<SpriteRenderer>()?.sprite;
string prefabName = blockPrefabs[i].name.ToLower();
if (prefabName.Contains("smallspike") || prefabName.Contains("smallobstacle"))
icon.GetComponent<RectTransform>().sizeDelta = new Vector2(50, 25);
else
icon.GetComponent<RectTransform>().sizeDelta = new Vector2(50, 50);
GameObject prefab = blockPrefabs[i];
button.GetComponent<Button>().onClick.AddListener(() => SelectPrefab(prefab));
currentButtons.Add(button);
}
var canvas = t.Find("Canvas");
var bg = canvas?.Find("BlankSquare");
var icon = canvas?.Find("PrefabIcon");
if (bg == null || icon == null) { Destroy(t.gameObject); return; }
float xOff = -325f + idx * 125f;
var bgRt = bg.GetComponent<RectTransform>();
var icRt = icon.GetComponent<RectTransform>();
bgRt.anchoredPosition = new Vector2(xOff, bgRt.anchoredPosition.y - 110);
icRt.anchoredPosition = new Vector2(xOff, icRt.anchoredPosition.y - 110);
bg.GetComponent<Image>().sprite = Resources.Load<Sprite>("InGame/ButtonSkin/BlankSquare");
icon.GetComponent<Image>().sprite = prefab.GetComponent<SpriteRenderer>()?.sprite;
icRt.sizeDelta = prefab.name.ToLower().Contains("small")
? new Vector2(50, 25)
: new Vector2(50, 50);
}
void ClearCurrentButtons()
{
foreach (var button in currentButtons)
Destroy(button);
foreach (var b in currentButtons) Destroy(b);
currentButtons.Clear();
}
public void NextPage()
{
int maxPage = 3;
Debug.Log(currentPage);
if (currentPage < maxPage - 1)
{
currentPage++;
GenerateButtons();
}
int max = Mathf.CeilToInt(blockPrefabs.Count / (float)buttonsPerPage);
if (currentPage < max - 1) { currentPage++; GenerateButtons(); }
}
public void PreviousPage()
{
Debug.Log(currentPage);
if (currentPage > 0)
{
currentPage--;
GenerateButtons();
}
if (currentPage > 0) { currentPage--; GenerateButtons(); }
}
#endregion
#region Placement
void SelectPrefab(GameObject prefab)
{
if (isPlacingBlock) return;
string name = prefab.name.ToLower();
if (name.Contains("portal"))
currentScale = new Vector3(0.5f, 0.5f, 1);
else if (name.Contains("small"))
currentScale = new Vector3(0.15f, 0.07f, 1);
else if (name.Contains("spike"))
currentScale = new Vector3(0.15f, 0.15f, 1);
else if (name.Contains("block"))
currentScale = new Vector3(0.2f, 0.2f, 1);
else if (name.Contains("bonus"))
currentScale = new Vector3(0.3f, 0.3f, 1);
else
currentScale = new Vector3(1f, 1f, 1);
currentScale = DetermineScaleFromName(prefab.name);
InstantiateAndPrepare(prefab, currentScale);
}
void Update()
{
// Déplacement de l'objet en cours de placement
if (isPlacingBlock && currentBlock != null)
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
currentBlock.transform.position = new Vector3(Mathf.Round(mousePos.x), Mathf.Round(mousePos.y), -1);
if (currentBlock != null && Input.GetKeyDown(KeyCode.R))
Vector3 DetermineScaleFromName(string name)
{
HandleBlockRotation(); // ✅ Nouvelle rotation
name = name.ToLower();
if (name.Contains("portal")) return new Vector3(0.5f, 0.5f, 1);
if (name.Contains("small")) return new Vector3(0.15f, 0.07f, 1);
if (name.Contains("spike")) return new Vector3(0.15f, 0.15f, 1);
if (name.Contains("block")) return new Vector3(0.2f, 0.2f, 1);
if (name.Contains("bonus")) return new Vector3(0.3f, 0.3f, 1);
return Vector3.one;
}
void HandleBlockPlacement()
{
Vector2 m = Camera.main.ScreenToWorldPoint(Input.mousePosition);
currentBlock.transform.position = new Vector3(Mathf.Round(m.x), Mathf.Round(m.y), -1);
if (Input.GetKeyDown(KeyCode.R)) HandleBlockRotation();
if (!currentBlock.name.ToLower().Contains("portal"))
{
float scroll = Input.GetAxis("Mouse ScrollWheel");
if (scroll != 0)
float s = Input.GetAxis("Mouse ScrollWheel");
if (s != 0)
{
float newScale = Mathf.Max(0.1f, currentScale.x + scroll * scaleStep);
currentScale = new Vector3(newScale, newScale, 1);
float ns = Mathf.Max(0.1f, currentScale.x + s * scaleStep);
currentScale = Vector3.one * ns;
currentBlock.transform.localScale = currentScale;
}
}
if (Input.GetMouseButtonDown(0))
{
Collider2D[] overlaps = Physics2D.OverlapBoxAll(
currentBlock.transform.position,
currentBlock.GetComponent<Collider2D>().bounds.size,
0f
);
if (overlaps.Length > 1)
if (!IsPlacementValid())
{
Debug.Log("Placement annulé : un objet est déjà présent à cet endroit.");
return;
}
PlaceBlock();
}
}
else if (Input.GetMouseButtonDown(0)) // Clic gauche pour reprendre un objet déjà placé
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D hit = Physics2D.OverlapPoint(mousePos);
if (hit != null && hit.transform != null)
bool IsPlacementValid()
{
if (hit.CompareTag("Ground"))
var col = currentBlock.GetComponent<Collider2D>();
var hits = Physics2D.OverlapBoxAll(col.bounds.center, col.bounds.size, 0f);
foreach (var h in hits)
{
Debug.Log("Impossible de déplacer le sol (tag Ground).");
return;
if (h == col) continue;
if (h.transform.IsChildOf(currentBlock.transform)) continue;
return false;
}
currentBlock = hit.gameObject;
return true;
}
void HandleBlockSelection()
{
if (!Input.GetMouseButtonDown(0)) return;
Vector2 m = Camera.main.ScreenToWorldPoint(Input.mousePosition);
var hit = Physics2D.OverlapPoint(m);
if (hit != null && !hit.CompareTag("Ground"))
{
var sel = hit.gameObject;
if ((sel.name.Contains("ObstacleSafer") || sel.name.Contains("ObstacleKiller"))
&& sel.transform.parent != null
&& sel.transform.parent.name.Contains("ObstacleBlock"))
sel = sel.transform.parent.gameObject;
currentBlock = sel;
isPlacingBlock = true;
currentScale = currentBlock.transform.localScale;
Debug.Log($"Déplacement de l'objet : {currentBlock.name}");
return;
}
}
void PlaceBlock()
{
string name = currentBlock.name.ToLower();
bool isSpikeType = name.Contains("spike") || name.Contains("smallspike") || name.Contains("killzone");
if (isSpikeType)
{
if (IsBlockedBySameTypeInSnapDirection())
{
Debug.LogError("Impossible de poser un spike sur un autre spike !");
Destroy(currentBlock);
}
else
{
if (!SnapSpikeByRotation())
{
Debug.LogError("Impossible de poser un spike dans le vide !");
Destroy(currentBlock);
}
else
{
TrySnapToNearbyBlock();
}
}
}
else
{
TrySnapToNearbyBlock();
if (name.Contains("obstacleblock"))
{
foreach (Transform child in currentBlock.transform)
{
if (child.name.ToLower().Contains("obstaclekiller"))
{
var col = child.GetComponent<BoxCollider2D>();
if (col != null)
{
Vector2 originalSize = col.size;
col.size = new Vector2(originalSize.x, 1f);
col.offset = new Vector2(col.offset.x, -0.5f);
}
}
}
}
}
// Redimensionnement d'un objet déjà placé
if (Input.GetMouseButtonDown(0) && Input.GetKey(KeyCode.LeftShift) && !isPlacingBlock)
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D hit = Physics2D.OverlapPoint(mousePos);
if (hit != null && hit.transform != null && !hit.CompareTag("Ground"))
{
resizingTarget = hit.gameObject;
originalMousePos = mousePos;
originalScale = resizingTarget.transform.localScale;
Vector2 localClick = mousePos - (Vector2)resizingTarget.transform.position;
float ratio = resizingTarget.GetComponent<Collider2D>().bounds.size.x /
resizingTarget.GetComponent<Collider2D>().bounds.size.y;
currentResizeAxis = Mathf.Abs(localClick.x) > Mathf.Abs(localClick.y * ratio)
? ResizeAxis.Horizontal
: ResizeAxis.Vertical;
isResizing = true;
Debug.Log($"Début de redimensionnement : {resizingTarget.name}, axe = {currentResizeAxis}");
}
isPlacingBlock = false;
currentBlock = null;
}
if (isResizing && resizingTarget != null)
bool IsBlockedBySameTypeInSnapDirection()
{
Vector3 currentMousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector3 delta = currentMousePos - originalMousePos;
var col = currentBlock.GetComponent<Collider2D>();
var b = col.bounds;
Vector3 newScale = originalScale;
if (currentResizeAxis == ResizeAxis.Horizontal)
newScale.x = Mathf.Max(0.1f, originalScale.x + delta.x);
else if (currentResizeAxis == ResizeAxis.Vertical)
newScale.y = Mathf.Max(0.1f, originalScale.y + delta.y);
// Temporarily apply the new scale for collision testing
Vector3 originalPos = resizingTarget.transform.position;
resizingTarget.transform.localScale = newScale;
Bounds bounds = resizingTarget.GetComponent<Collider2D>().bounds;
Collider2D[] overlaps = Physics2D.OverlapBoxAll(bounds.center, bounds.size, 0f);
bool hasCollision = false;
foreach (var col in overlaps)
int rot = (Mathf.RoundToInt(currentBlock.transform.eulerAngles.z / 90) % 4 + 4) % 4;
Vector2 dir = rot switch
{
if (col.gameObject != resizingTarget)
1 => Vector2.right,
2 => Vector2.up,
3 => Vector2.left,
_ => Vector2.down
};
float offset = 0.01f;
Vector2 origin = rot switch
{
hasCollision = true;
1 => new Vector2(b.min.x - offset, b.center.y), // left
3 => new Vector2(b.max.x + offset, b.center.y), // right
2 => new Vector2(b.center.x, b.max.y + offset), // top
_ => new Vector2(b.center.x, b.min.y - offset) // bottom
};
RaycastHit2D[] hits = Physics2D.BoxCastAll(
origin,
b.size,
0f,
dir,
100f
);
foreach (var h in hits)
{
if (h.collider == null || h.collider.gameObject == currentBlock) continue;
if (h.collider.isTrigger) continue;
string me = currentBlock.name.ToLower();
string other = h.collider.gameObject.name.ToLower();
bool meIsSpikeFamily = me.Contains("spike") || me.Contains("killzone");
bool otherIsSpikeFamily = other.Contains("spike") || other.Contains("killzone");
if (meIsSpikeFamily && otherIsSpikeFamily)
{
return true;
}
break;
}
return false;
}
if (hasCollision)
bool SnapSpikeByRotation()
{
resizingTarget.transform.localScale = originalScale; // revert
Debug.Log("Étirement annulé : collision détectée.");
var col = currentBlock.GetComponent<Collider2D>();
var b = col.bounds;
float hw = b.extents.x;
float hh = b.extents.y;
int rot = ((Mathf.RoundToInt(currentBlock.transform.eulerAngles.z / 90f) % 4) + 4) % 4;
Vector2 dir;
switch (rot)
{
case 1: dir = Vector2.right; break;
case 2: dir = Vector2.up; break;
case 3: dir = Vector2.left; break;
default: dir = Vector2.down; break;
}
const float eps = 0.01f;
List<Vector2> origins = new List<Vector2>();
if (dir == Vector2.down || dir == Vector2.up)
{
float y0 = (dir == Vector2.down) ? b.min.y - eps : b.max.y + eps;
origins.Add(new Vector2(b.min.x + 0.1f * b.size.x, y0));
origins.Add(new Vector2(b.center.x, y0));
origins.Add(new Vector2(b.max.x - 0.1f * b.size.x, y0));
}
else
{
float x0 = (dir == Vector2.left) ? b.min.x - eps : b.max.x + eps;
origins.Add(new Vector2(x0, b.min.y + 0.1f * b.size.y));
origins.Add(new Vector2(x0, b.center.y));
origins.Add(new Vector2(x0, b.max.y - 0.1f * b.size.y));
}
float bestDist = float.PositiveInfinity;
RaycastHit2D bestHit = default;
foreach (var o in origins)
{
var hits = Physics2D.RaycastAll(o, dir, 100f);
foreach (var h in hits)
{
if (h.collider == null || h.collider.gameObject == currentBlock) continue;
if (h.collider.isTrigger) continue;
if (h.distance < bestDist)
{
bestDist = h.distance;
bestHit = h;
}
}
}
if (bestHit.collider == null)
return false;
Vector3 p = currentBlock.transform.position;
if (dir == Vector2.down) p.y = bestHit.point.y + hh;
else if (dir == Vector2.up) p.y = bestHit.point.y - hh;
else if (dir == Vector2.left) p.x = bestHit.point.x + hw;
else if (dir == Vector2.right) p.x = bestHit.point.x - hw;
currentBlock.transform.position = new Vector3(p.x, p.y, -1f);
return true;
}
#endregion
#region Resizing & Deletion
void HandleBlockResizing()
{
if (Input.GetMouseButtonDown(0) && Input.GetKey(KeyCode.LeftShift) && !isPlacingBlock)
{
Vector2 m = Camera.main.ScreenToWorldPoint(Input.mousePosition);
var hit = Physics2D.OverlapPoint(m);
if (hit != null && !hit.CompareTag("Ground"))
BeginResizing(hit.gameObject, m);
}
if (isResizing && resizingTarget != null)
PerformResizing();
}
void BeginResizing(GameObject tgt, Vector2 mPos)
{
resizingTarget = tgt;
originalMousePos = mPos;
originalScale = tgt.transform.localScale;
Vector2 local = mPos - (Vector2)tgt.transform.position;
float ratio = tgt.GetComponent<Collider2D>().bounds.size.x / tgt.GetComponent<Collider2D>().bounds.size.y;
currentResizeAxis = Mathf.Abs(local.x) > Mathf.Abs(local.y * ratio)
? ResizeAxis.Horizontal
: ResizeAxis.Vertical;
isResizing = true;
}
void PerformResizing()
{
Vector3 m = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector3 delta = m - originalMousePos;
Vector3 ns = originalScale;
if (currentResizeAxis == ResizeAxis.Horizontal)
ns.x = Mathf.Max(0.1f, originalScale.x + delta.x);
else
ns.y = Mathf.Max(0.1f, originalScale.y + delta.y);
resizingTarget.transform.localScale = ns;
if (IsOverlapping(resizingTarget))
{
resizingTarget.transform.localScale = originalScale;
}
if (Input.GetMouseButtonUp(0))
{
isResizing = false;
@ -280,174 +423,153 @@ public class LevelEditor : MonoBehaviour
}
}
bool IsOverlapping(GameObject obj)
{
var b = obj.GetComponent<Collider2D>().bounds;
foreach (var h in Physics2D.OverlapBoxAll(b.center, b.size, 0f))
if (h.gameObject != obj) return true;
return false;
}
// Clic droit pour supprimer un objet déjà placé (sauf le sol)
if (Input.GetMouseButtonDown(1))
void HandleBlockDeletion()
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Collider2D hit = Physics2D.OverlapPoint(mousePos);
if (!Input.GetMouseButtonDown(1)) return;
Vector2 m = Camera.main.ScreenToWorldPoint(Input.mousePosition);
var hit = Physics2D.OverlapPoint(m);
if (hit != null && !hit.CompareTag("Ground"))
{
var toD = hit.gameObject;
if ((toD.name.Contains("ObstacleSafer") || toD.name.Contains("ObstacleKiller"))
&& toD.transform.parent != null
&& toD.transform.parent.name.Contains("ObstacleBlock"))
toD = toD.transform.parent.gameObject;
if (toD == currentBlock) { currentBlock = null; isPlacingBlock = false; }
Destroy(toD);
}
}
if (hit != null && hit.transform != null)
#endregion
#region Utility
bool IsPointerOverUI()
=> EventSystem.current != null && EventSystem.current.IsPointerOverGameObject();
void TrySnapToNearbyBlock()
{
if (hit.CompareTag("Ground"))
if (currentBlock == null) return;
var col = currentBlock.GetComponent<Collider2D>();
var b = col.bounds;
float snapDistance = 2f;
float verticalEps = 0.1f;
// === SNAP HORIZONTAL (droite)
Vector2 hBoxSize = new Vector2(snapDistance, b.size.y - verticalEps * 2f);
Vector2 rightCenter = new Vector2(b.max.x + snapDistance / 2f, b.center.y);
var hits = Physics2D.OverlapBoxAll(rightCenter, hBoxSize, 0f);
foreach (var h in hits)
{
Debug.Log("Impossible de supprimer le sol (tag Ground).");
if (IsInvalidSnapTarget(h)) continue;
float newX = h.bounds.min.x - b.extents.x;
currentBlock.transform.position = new Vector3(newX, currentBlock.transform.position.y, -1f);
return;
}
Destroy(hit.gameObject);
Debug.Log($"Objet supprimé : {hit.name}");
}
}
}
void PlaceBlock()
// === SNAP HORIZONTAL (gauche)
Vector2 leftCenter = new Vector2(b.min.x - snapDistance / 2f, b.center.y);
hits = Physics2D.OverlapBoxAll(leftCenter, hBoxSize, 0f);
foreach (var h in hits)
{
bool skipVerticalSnap = false;
if (currentBlock.name.ToLower().Contains("smallobstacle") || currentBlock.name.ToLower().Contains("portal"))
{
skipVerticalSnap = true; // On saute l'alignement vertical pour ces cas-là
}
if (!skipVerticalSnap)
{
Vector2 origin = currentBlock.transform.position;
RaycastHit2D[] hitsBelow = Physics2D.RaycastAll(origin, Vector2.down, 100f);
float highestY = -Mathf.Infinity;
GameObject bestTargetBelow = null;
foreach (var hit in hitsBelow)
{
if (hit.collider != null && hit.collider.gameObject != currentBlock)
{
float topOfObject = hit.collider.bounds.max.y;
if (topOfObject > highestY)
{
highestY = topOfObject;
bestTargetBelow = hit.collider.gameObject;
}
}
}
if (bestTargetBelow != null)
{
float height = currentBlock.GetComponent<Collider2D>().bounds.size.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, highestY + height / 2f, -1);
}
else
{
float height = currentBlock.GetComponent<Collider2D>().bounds.size.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, height / 2f, -1);
}
}
// ➔ Toujours essayer de snap sur la droite et en bas même pour Portal et SmallObstacle
TrySnapToNearbyBlock();
isPlacingBlock = false;
currentBlock = null;
}
private void TrySnapToNearbyBlock()
{
if (currentBlock == null)
if (IsInvalidSnapTarget(h)) continue;
float newX = h.bounds.max.x + b.extents.x;
currentBlock.transform.position = new Vector3(newX, currentBlock.transform.position.y, -1f);
return;
}
Collider2D blockCollider = currentBlock.GetComponent<Collider2D>();
Bounds bounds = blockCollider.bounds;
float snapDistance = 1f; // Distance de snap (en Unity units)
// Zone de scan à droite
Vector2 rightAreaStart = new Vector2(bounds.max.x, bounds.min.y);
Vector2 rightAreaEnd = new Vector2(bounds.max.x + snapDistance, bounds.max.y);
// Zone de scan à gauche
Vector2 leftAreaStart = new Vector2(bounds.min.x - snapDistance, bounds.min.y);
Vector2 leftAreaEnd = new Vector2(bounds.min.x, bounds.max.y);
// Zone de scan en dessous
Vector2 bottomAreaStart = new Vector2(bounds.min.x, bounds.min.y - snapDistance);
Vector2 bottomAreaEnd = new Vector2(bounds.max.x, bounds.min.y);
// Zone de scan au dessus
Vector2 topAreaStart = new Vector2(bounds.min.x, bounds.max.y);
Vector2 topAreaEnd = new Vector2(bounds.max.x, bounds.max.y + snapDistance);
Collider2D[] hitsRight = Physics2D.OverlapAreaAll(rightAreaStart, rightAreaEnd);
Collider2D[] hitsLeft = Physics2D.OverlapAreaAll(leftAreaStart, leftAreaEnd);
Collider2D[] hitsBelow = Physics2D.OverlapAreaAll(bottomAreaStart, bottomAreaEnd);
Collider2D[] hitsAbove = Physics2D.OverlapAreaAll(topAreaStart, topAreaEnd);
// ➔ Priorité : droite > gauche > bas > haut
foreach (var hit in hitsRight)
// === SNAP VERTICAL (dessous)
Vector2 downBoxSize = new Vector2(b.size.x - 0.1f, snapDistance);
Vector2 downCenter = new Vector2(b.center.x, b.min.y - snapDistance / 2f);
hits = Physics2D.OverlapBoxAll(downCenter, downBoxSize, 0f);
foreach (var h in hits)
{
if (hit != null && hit.gameObject != currentBlock)
if (IsInvalidSnapTarget(h)) continue;
float newY = h.bounds.max.y + b.extents.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, newY, -1f);
return;
}
// === SNAP VERTICAL (au-dessus)
Vector2 upCenter = new Vector2(b.center.x, b.max.y + snapDistance / 2f);
hits = Physics2D.OverlapBoxAll(upCenter, downBoxSize, 0f);
foreach (var h in hits)
{
float theirLeft = hit.bounds.min.x;
float ourWidth = bounds.size.x;
currentBlock.transform.position = new Vector3(theirLeft - ourWidth / 2f, currentBlock.transform.position.y, -1);
Debug.Log("✅ Snap automatique à droite !");
if (IsInvalidSnapTarget(h)) continue;
float newY = h.bounds.min.y - b.extents.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, newY, -1f);
return;
}
}
foreach (var hit in hitsLeft)
bool IsInvalidSnapTarget(Collider2D h)
{
if (hit != null && hit.gameObject != currentBlock)
if (h == null || h.gameObject == currentBlock || h.isTrigger) return true;
var t = h.transform;
if (t.parent != null && t.parent.name.Contains("ObstacleBlock"))
{
float theirRight = hit.bounds.max.x;
float ourWidth = bounds.size.x;
currentBlock.transform.position = new Vector3(theirRight + ourWidth / 2f, currentBlock.transform.position.y, -1);
Debug.Log("✅ Snap automatique à gauche !");
return;
}
if (t.name.Contains("ObstacleKiller") || t.name.Contains("ObstacleSafer"))
return true;
}
foreach (var hit in hitsBelow)
{
if (hit != null && hit.gameObject != currentBlock)
{
float theirTop = hit.bounds.max.y;
float ourHeight = bounds.size.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, theirTop + ourHeight / 2f, -1);
Debug.Log("✅ Snap automatique en bas !");
return;
}
return false;
}
foreach (var hit in hitsAbove)
// Filtrage des enfants parasites
bool IsChildOfObstacleBlock(Collider2D col)
{
if (hit != null && hit.gameObject != currentBlock)
var t = col.transform;
if (t.parent == null) return false;
bool isNamedObstacleChild = t.name.Contains("ObstacleSafer") || t.name.Contains("ObstacleKiller");
bool parentIsBlock = t.parent.name.Contains("ObstacleBlock");
return isNamedObstacleChild && parentIsBlock;
}
void HandleBlockRotation()
{
float theirBottom = hit.bounds.min.y;
float ourHeight = bounds.size.y;
currentBlock.transform.position = new Vector3(currentBlock.transform.position.x, theirBottom - ourHeight / 2f, -1);
Debug.Log("✅ Snap automatique en haut !");
return;
}
}
currentBlock.transform.Rotate(0, 0, -90f);
}
void InstantiateAndPrepare(GameObject prefab, Vector3? scaleOverride = null)
{
GameObject obj = Instantiate(prefab);
var obj = Instantiate(prefab, persistentBlockContainer);
obj.transform.position = new Vector3(0, 0, -1);
obj.transform.localScale = scaleOverride ?? currentScale;
try { obj.tag = prefab.name; }
catch { Debug.LogWarning($"Le tag '{prefab.name}' n'existe pas. Ajoutez-le dans Project Settings > Tags."); }
currentBlock = obj;
currentBlock.tag = prefab.tag;
isPlacingBlock = true;
}
private void HandleBlockRotation()
public void Save()
{
currentBlock.transform.Rotate(0f, 0f, -90f); // ➔ Rotation de 90° dans le sens horaire
Debug.Log("🔄 Bloc pivoté de 90° !");
}
#endregion
public void ClearEditor()
{
if (persistentBlockContainer == null) return;
foreach (Transform child in persistentBlockContainer)
{
Destroy(child.gameObject);
}
currentBlock = null;
isPlacingBlock = false;
currentPage = 0;
ClearCurrentButtons();
GenerateButtons();
}
}

View File

@ -5,29 +5,38 @@ using System.IO;
public class LevelLoader : MonoBehaviour
{
public LevelsLoader levelsLoader;
public AudioSource audioSource;
public bool editMode;
public bool createMode;
public AudioSource musicSource;
public Text progressionText;
private readonly float groundY = -6.034f;
private GameObject GetPrefab(string type)
{
return Resources.Load<GameObject>("Prefabs/" + type);
var prefab = Resources.Load<GameObject>("Prefabs/" + type);
if (prefab == null)
{
Debug.LogError($"Prefab introuvable pour : {type}");
}
return prefab;
}
private void LoadAudio()
{
audioSource.clip = Resources.Load<AudioClip>(Path.Combine("Musics", levelsLoader.levelCurrent.musicName));
musicSource.clip = Resources.Load<AudioClip>(Path.Combine("Musics", levelsLoader.levelCurrent.musicName));
if (editMode)
{
return;
}
if (PlayerPrefs.HasKey("Volume"))
{
audioSource.volume = PlayerPrefs.GetFloat("Volume");
musicSource.volume = PlayerPrefs.GetFloat("Volume");
}
else
{
audioSource.volume = 1f;
musicSource.volume = 1f;
}
audioSource.Play();
musicSource.Play();
}
private void LoadElements()
@ -36,35 +45,112 @@ public class LevelLoader : MonoBehaviour
foreach (var element in current.elements)
{
GameObject prefab = GetPrefab(element.type);
GameObject instance = Instantiate(prefab, new Vector3(element.x, element.y, 0), Quaternion.identity);
if (prefab == null) continue;
GameObject instance = Instantiate(
prefab,
new Vector3(element.x, element.y, 0),
Quaternion.identity
);
if (editMode)
{
foreach (Transform child in instance.transform)
{
if (child.name.Contains("ObstacleKiller"))
{
var col = child.GetComponent<BoxCollider2D>();
if (col != null && col.size.y > 2f) // Trop grand
{
Debug.LogWarning($"⚠️ Collider {child.name} trop grand, réduction appliquée.");
col.size = new Vector2(col.size.x, 1f);
col.offset = new Vector2(col.offset.x, -2f); // Ajuste selon ton design
}
}
}
}
// En mode jeu/test uniquement → ajout du AICollider
if (!editMode)
{
Instantiate(
Resources.Load<GameObject>("AICollider"),
new Vector3(element.x - 1, element.y, 0),
Quaternion.identity
);
}
// Appliquer l'échelle personnalisée
Vector3 originalScale = instance.transform.localScale;
float newScaleX = element.scaleX > 0 ? element.scaleX : originalScale.x;
float newScaleY = element.scaleY > 0 ? element.scaleY : originalScale.y;
instance.transform.localScale = new Vector3(newScaleX, newScaleY, originalScale.z);
// Appliquer la rotation
if (element.rotationZ != 0)
{
instance.transform.rotation = Quaternion.Euler(0, 0, element.rotationZ);
}
}
// Sol uniquement en mode jeu
if (!editMode)
{
GameObject groundPrefab = GetPrefab("Ground");
if (groundPrefab != null)
{
GameObject groundInstance = Instantiate(
groundPrefab,
new Vector3(current.LastX / 2, groundY, 0),
Quaternion.identity
);
groundInstance.transform.localScale = new Vector3(current.LastX / 5f * 2, 1, 1);
}
GameObject winWall = GetPrefab("WinnerWall");
Instantiate(
winWall,
new Vector3(current.LastX, 0, 0),
Quaternion.Euler(0, 0, 90)
);
}
}
private void Awake()
{
levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>();
Level current = levelsLoader.levelCurrent;
createMode = PlayerPrefs.GetInt("CreateMode", 0) == 1;
if (!editMode)
{
GameObject groundPrefab = GetPrefab("Ground");
GameObject groundInstance = Instantiate(groundPrefab, new Vector3(current.LastX / 2, groundY, 0), Quaternion.identity);
float groundWidth = current.LastX;
groundInstance.transform.localScale = new Vector3(groundWidth / 5f * 2, 1, 1);
Instantiate(GetPrefab("WinnerWall"), new Vector3(current.LastX, 0, 0), Quaternion.Euler(0, 0, 90));
}
}
public void Start()
{
levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>();
if (!createMode)
{
levelsLoader = GameObject
.FindGameObjectWithTag("LevelsLoader")
.GetComponent<LevelsLoader>();
levelsLoader.IncreaseTotalAttempts();
LoadAudio();
LoadElements();
LoadAudio();
}
}
public void Update()
{
Level current = levelsLoader.levelCurrent;
progressionText.text = current.ProgressionPercent + "%";
if (!editMode)
{
progressionText.text = levelsLoader.levelCurrent.ProgressionPercent + "%";
}
}
}

View File

@ -50,7 +50,10 @@ public class LevelsLoader : MonoBehaviour
private void SaveLevelCurrent()
{
if (levelCurrent == null) return;
if (levelCurrent == null)
{
return;
}
LevelStat levelStat = new()
{
@ -68,7 +71,10 @@ public class LevelsLoader : MonoBehaviour
public void NextLevel()
{
if (levels.Count == 0) return;
if (levels.Count == 0)
{
return;
}
int currentIndex = levels.IndexOf(levelCurrent);
levelCurrent = levels[(currentIndex + 1) % levels.Count];
@ -76,7 +82,10 @@ public class LevelsLoader : MonoBehaviour
public void PreviousLevel()
{
if (levels.Count == 0) return;
if (levels.Count == 0)
{
return;
}
int currentIndex = levels.IndexOf(levelCurrent);
levelCurrent = levels[(currentIndex - 1 + levels.Count) % levels.Count];
@ -84,7 +93,10 @@ public class LevelsLoader : MonoBehaviour
public void IncreaseTotalJumps()
{
if (levelCurrent == null) return;
if (levelCurrent == null)
{
return;
}
levelCurrent.TotalJumps += 1;
SaveLevelCurrent();
@ -92,7 +104,10 @@ public class LevelsLoader : MonoBehaviour
public void IncreaseTotalAttempts()
{
if (levelCurrent == null) return;
if (levelCurrent == null)
{
return;
}
levelCurrent.TotalAttempts += 1;
SaveLevelCurrent();
@ -100,7 +115,10 @@ public class LevelsLoader : MonoBehaviour
public int CalculateCurrentProgressionPercent(Vector3 playerPosition)
{
if (levelCurrent == null) return 0;
if (levelCurrent == null)
{
return 0;
}
float lastX = levelCurrent.LastX;
GameObject winnerWallPrefab = Resources.Load<GameObject>("Prefabs/WinnerWall");
@ -125,6 +143,8 @@ public class LevelsLoader : MonoBehaviour
levels.Clear();
LoadAllLevels();
if (levels.Count > 0)
{
levelCurrent = levels[0];
}
}
}

View File

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 588b3f9ce673f764b8a3a81842ed9f46
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,10 +1,26 @@
using System.Collections;
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LevelHomeButton : MonoBehaviour
{
public AudioSource sfxSource;
public static IEnumerator PlaySoundAndLoadScene(AudioSource sfxSource, string scene)
{
yield return new WaitWhile(() => sfxSource.isPlaying);
Time.timeScale = 1;
SceneManager.LoadScene(scene);
}
public void GoToHome()
{
SceneManager.LoadScene("HomeScene");
PlayerPrefs.SetInt("CreateMode", 0);
PlayerPrefs.SetInt("EditMode", 0);
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(PlaySoundAndLoadScene(sfxSource, "HomeScene"));
}
}

View File

@ -7,4 +7,9 @@ public class LevelNameButton : MonoBehaviour
{
SceneManager.LoadScene("LevelScene");
}
public void EditLevel()
{
PlayerPrefs.SetInt("CreateMode", 0);
SceneManager.LoadScene("LevelEditorScene");
}
}

View File

@ -1,7 +1,9 @@
using System.IO;
using UnityEngine;
public class LevelNextButton : MonoBehaviour
{
public AudioSource sfxSource;
public LevelsLoader levelsLoader;
public void Start()
@ -9,8 +11,18 @@ public class LevelNextButton : MonoBehaviour
levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>();
}
public void Update()
{
if (Input.GetKeyDown(KeyCode.RightArrow))
{
NextLevel();
}
}
public void NextLevel()
{
levelsLoader.NextLevel();
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
}
}

View File

@ -1,7 +1,9 @@
using System.IO;
using UnityEngine;
public class LevelPreviousButton : MonoBehaviour
{
public AudioSource sfxSource;
public LevelsLoader levelsLoader;
public void Start()
@ -9,8 +11,18 @@ public class LevelPreviousButton : MonoBehaviour
levelsLoader = GameObject.FindGameObjectWithTag("LevelsLoader").GetComponent<LevelsLoader>();
}
public void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
PreviousLevel();
}
}
public void PreviousLevel()
{
levelsLoader.PreviousLevel();
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
}
}

View File

@ -1,16 +1,25 @@
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
public class MainMenu : MonoBehaviour
{
public AudioSource sfxSource;
public void LaunchGame()
{
SceneManager.LoadSceneAsync("SelectLevelScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "SelectLevelScene"));
}
public void OpenImport()
{
SceneManager.LoadSceneAsync("ImportScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "ImportScene"));
}
public void QuitGame()
@ -20,16 +29,34 @@ public class MainMenu : MonoBehaviour
public void LevelEditor()
{
SceneManager.LoadSceneAsync("LevelEditorScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "LevelEditorScene"));
}
public void CreateVoidLevel()
{
PlayerPrefs.SetInt("CreateMode", 1);
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "LevelEditorScene"));
}
public void EditorChoice()
{
SceneManager.LoadSceneAsync("EditorChoiceScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "EditorChoiceScene"));
}
public void CreateLevel()
public void EditLevel()
{
SceneManager.LoadSceneAsync("CreateLevelScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "SelectLevelToEditScene"));
}
}

View File

@ -1,3 +1,4 @@
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
@ -7,32 +8,36 @@ public class PauseMenu : MonoBehaviour
public GameObject pauseMenu;
public GameObject pauseButton;
public LevelLoader levelLoader;
public AudioSource sfxSource;
public Slider volumeSlider;
public void Start()
{
if (PlayerPrefs.HasKey("Volume"))
{
levelLoader.audioSource.volume = PlayerPrefs.GetFloat("Volume");
volumeSlider.value = levelLoader.audioSource.volume;
levelLoader.musicSource.volume = PlayerPrefs.GetFloat("Volume");
volumeSlider.value = levelLoader.musicSource.volume;
}
else
{
levelLoader.audioSource.volume = 1f;
levelLoader.musicSource.volume = 1f;
volumeSlider.value = 1f;
}
}
public void ChangeVolume()
{
levelLoader.audioSource.volume = volumeSlider.value;
PlayerPrefs.SetFloat("Volume", levelLoader.audioSource.volume);
levelLoader.musicSource.volume = volumeSlider.value;
PlayerPrefs.SetFloat("Volume", levelLoader.musicSource.volume);
}
public void Pause()
{
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
Time.timeScale = 0;
levelLoader.audioSource.Pause();
levelLoader.musicSource.Pause();
pauseMenu.SetActive(true);
pauseButton.SetActive(false);
@ -41,13 +46,19 @@ public class PauseMenu : MonoBehaviour
public void Home()
{
Time.timeScale = 1;
SceneManager.LoadScene("HomeScene");
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "HomeScene"));
}
public void Resume()
{
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "click"));
sfxSource.Play();
Time.timeScale = 1;
levelLoader.audioSource.Play();
levelLoader.musicSource.Play();
pauseMenu.SetActive(false);
pauseButton.SetActive(true);

View File

@ -1,3 +1,4 @@
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
@ -11,6 +12,9 @@ public class Player : MonoBehaviour
public bool IsColliding { get; set; } = true;
public bool HasStarted { get; set; } = false;
public bool CanJump { get; set; } = true;
public PauseMenu pauseMenu;
public AudioSource sfxSource;
public bool editMode { get; set; } = false;
public IGameMode CurrentGameMode { get; set; }
public float SpeedMultiplier = 1f;
@ -24,10 +28,14 @@ public class Player : MonoBehaviour
GameObject loaderObj = GameObject.FindGameObjectWithTag("LevelsLoader");
if (loaderObj != null)
{
LevelsLoader = loaderObj.GetComponent<LevelsLoader>();
}
else
{
Debug.LogWarning("LevelsLoader introuvable : Progression désactivée pour ce niveau.");
}
}
public void Start()
{
@ -38,18 +46,80 @@ public class Player : MonoBehaviour
CurrentGameMode = new NormalGameMode();
}
public bool IsAI
{
get
{
if (PlayerPrefs.HasKey("AI"))
{
return PlayerPrefs.GetInt("AI") == 1;
}
else
{
return false;
}
}
set
{
PlayerPrefs.SetInt("AI", value ? 1 : 0);
}
}
public void Update()
{
if (CurrentGameMode != null)
CurrentGameMode.Update(this);
CurrentGameMode?.Update(this);
if (LevelsLoader != null)
{
LevelsLoader.CalculateCurrentProgressionPercent(transform.position);
}
if (Input.GetKeyDown(KeyCode.Escape))
{
if (pauseMenu.pauseMenu.activeSelf)
{
pauseMenu.Resume();
}
else
{
pauseMenu.Pause();
}
}
}
public virtual void OnCollisionEnter2D(Collision2D collision)
{
CurrentGameMode?.OnCollisionEnter(this, collision);
if (editMode && (collision.gameObject.CompareTag("Kill") || collision.gameObject.CompareTag("Win")))
{
GameObject spawn = new GameObject("AutoSpawnPoint");
spawn.transform.position = new Vector3(-16, -3, 0f);
transform.position = spawn.transform.position;
RigidBody.linearVelocity = Vector2.zero;
SpeedMultiplier = 1f;
CurrentGameMode = new NormalGameMode();
SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/BaseSquare");
return;
}
if (collision.gameObject.CompareTag("Kill"))
{
SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/Explosion");
Time.timeScale = 0;
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "death"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, SceneManager.GetActiveScene().name));
}
if (collision.gameObject.CompareTag("Win"))
{
SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/Explosion");
Time.timeScale = 0;
sfxSource.clip = Resources.Load<AudioClip>(Path.Combine("Sounds", "win"));
sfxSource.Play();
StartCoroutine(LevelHomeButton.PlaySoundAndLoadScene(sfxSource, "SelectLevelScene"));
}
}
public void OnCollisionExit2D(Collision2D collision)
@ -79,6 +149,10 @@ public class Player : MonoBehaviour
SpeedMultiplier /= 1.5f;
Destroy(collision.gameObject);
}
else if (collision.CompareTag("AICollider") && IsAI)
{
CurrentGameMode.Jump(this);
}
}
public void ChangeGameMode(IGameMode newMode)

View File

@ -18,25 +18,29 @@ public class PlayerCamera : MonoBehaviour
private void Update()
{
if (isPlaying)
{
if (!isPlaying) return;
Player player = playerObject.GetComponent<Player>();
float minYFollow = normalMinYFollow;
if (player.CurrentGameMode is ShipGameMode)
{
minYFollow = shipMinYFollow;
}
// Choix du minY selon le mode de jeu
float minYFollow = (player.CurrentGameMode is ShipGameMode)
? shipMinYFollow
: normalMinYFollow;
// Calcul de la cible Y
float targetY = initialY;
if (playerObject.transform.position.y > minYFollow)
{
targetY = playerObject.transform.position.y;
}
// Interpolation douce
float newY = Mathf.Lerp(transform.position.y, targetY, smoothSpeed * Time.deltaTime);
transform.position = new Vector3(playerObject.transform.position.x, newY, transform.position.z);
}
// Clamp pour éviter de descendre sous Y = 0
newY = Mathf.Max(newY, 0f);
// On suit aussi l'axe X du joueur
float newX = playerObject.transform.position.x;
transform.position = new Vector3(newX, newY, transform.position.z);
}
}

View File

@ -0,0 +1,74 @@
using UnityEngine;
using UnityEngine.UI;
public class SelectDifficulty : MonoBehaviour
{
public GameObject selectDifficultyPanel;
public GameObject mainSaveButton;
public StarsRenderer starsRenderer;
public JSONExporter jsonExporter;
private int currentDifficulty;
private const int MinDiff = 1;
private const int MaxDiff = 5;
void Awake()
{
if (selectDifficultyPanel == null)
{
selectDifficultyPanel = GameObject.Find("SelectDifficultyPanel");
}
if (mainSaveButton == null)
{
mainSaveButton = GameObject.Find("MainSaveButton");
}
}
void Start()
{
currentDifficulty = starsRenderer != null
? starsRenderer.GetCurrentDifficulty()
: MinDiff;
currentDifficulty = Mathf.Clamp(currentDifficulty, MinDiff, MaxDiff);
UpdateUI();
}
private void UpdateUI()
{
starsRenderer.UseAutomaticMode();
starsRenderer?.SetManualDifficulty(currentDifficulty);
}
public void OpenSelectDifficulty()
{
selectDifficultyPanel.SetActive(true);
mainSaveButton.SetActive(false);
UpdateUI();
}
public void PreviousDifficulty()
{
if (currentDifficulty > MinDiff)
{
currentDifficulty--;
UpdateUI();
}
}
public void NextDifficulty()
{
if (currentDifficulty < MaxDiff)
{
currentDifficulty++;
UpdateUI();
}
}
public void Cancel()
{
selectDifficultyPanel.SetActive(false);
mainSaveButton.SetActive(true);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c9aabd0c1803d3d46b76d6bbfcc0f471

View File

@ -0,0 +1,96 @@
using UnityEngine;
using UnityEngine.UI;
public class StarsRenderer : MonoBehaviour
{
public Image starTemplate;
public RectTransform starsContainer;
public LevelsLoader levelsLoader;
public float extraPadding = 10f;
private bool useManualMode = false;
private int manualDifficulty = 1;
private float starSpacing;
private int lastRenderedDifficulty = -1;
void Start()
{
if (starTemplate == null || starsContainer == null)
{
Debug.LogError("Star template ou starsContainer non assigné !", this);
enabled = false;
return;
}
starTemplate.gameObject.SetActive(false);
if (levelsLoader == null)
{
var loaderObj = GameObject.FindGameObjectWithTag("LevelsLoader");
if (loaderObj != null)
levelsLoader = loaderObj.GetComponent<LevelsLoader>();
}
starSpacing = starTemplate.rectTransform.sizeDelta.x + extraPadding;
lastRenderedDifficulty = -1;
}
void Update()
{
int target = GetCurrentDifficulty();
if (target != lastRenderedDifficulty)
RenderStarsInternal(target);
}
public void SetManualDifficulty(int difficulty)
{
useManualMode = true;
manualDifficulty = Mathf.Clamp(difficulty, 1, 5);
lastRenderedDifficulty = -1;
RenderStarsInternal(manualDifficulty);
}
public void UseAutomaticMode()
{
useManualMode = false;
lastRenderedDifficulty = -1;
}
public int GetCurrentDifficulty()
{
if (useManualMode)
return manualDifficulty;
if (levelsLoader != null && levelsLoader.levelCurrent != null)
return Mathf.Clamp(levelsLoader.levelCurrent.difficulty, 1, 5);
return 1;
}
private void RenderStarsInternal(int difficulty)
{
for (int i = starsContainer.childCount - 1; i >= 0; i--)
{
var child = starsContainer.GetChild(i);
if (child.gameObject != starTemplate.gameObject)
Destroy(child.gameObject);
}
lastRenderedDifficulty = difficulty;
float totalWidth = difficulty * starSpacing - extraPadding;
float startX = -totalWidth / 2 + starTemplate.rectTransform.sizeDelta.x / 2;
for (int i = 0; i < difficulty; i++)
{
var star = Instantiate(starTemplate, starsContainer);
star.gameObject.SetActive(true);
star.rectTransform.anchoredPosition = new Vector2(startX + i * starSpacing, 0f);
star.rectTransform.SetAsLastSibling();
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 443f905013127a44f9c3dcf5a8fed74b

View File

@ -8,6 +8,7 @@ public class TestManager : MonoBehaviour
public Transform spawnPoint;
public GameObject editorUI;
public PlayerCamera playerCamera;
public AudioSource sfxSource;
private bool isTesting = false;
@ -27,6 +28,7 @@ public class TestManager : MonoBehaviour
else
{
gameMode = new NormalGameMode();
currentPlayer.editMode = true;
currentPlayer.ChangeGameMode(gameMode);
currentPlayer.SpeedMultiplier = 0f;
@ -68,12 +70,16 @@ public class TestManager : MonoBehaviour
}
if (editorUI != null)
{
Debug.LogError("editor UI null");
editorUI.SetActive(false);
}
currentPlayer.transform.position = spawnPoint.position;
currentPlayer.transform.rotation = Quaternion.Euler(0f, 0f, 0f);
currentPlayer.RigidBody.freezeRotation = true;
currentPlayer.RigidBody.linearVelocity = Vector2.zero;
currentPlayer.SpeedMultiplier = 1f;
currentPlayer.SpriteRenderer.sprite = Resources.Load<Sprite>("Shapes/BaseSquare");
currentPlayer.ChangeGameMode(gameMode);
isTesting = true;
@ -88,9 +94,7 @@ public class TestManager : MonoBehaviour
currentPlayer.SpriteRenderer.enabled = true;
if (currentPlayer.Particle != null)
currentPlayer.Particle.Play(); // ✅ Démarrer la particule
Debug.Log("[TestManager] Test du niveau démarré !");
currentPlayer.Particle.Play();
}
public void StopTest()
@ -105,7 +109,7 @@ public class TestManager : MonoBehaviour
currentPlayer.SpeedMultiplier = 0f;
if (currentPlayer.Particle != null)
currentPlayer.Particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); // ✅ Arrêter proprement
currentPlayer.Particle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
if (currentPlayer.SpriteRenderer != null)
currentPlayer.SpriteRenderer.enabled = false;
@ -121,7 +125,5 @@ public class TestManager : MonoBehaviour
}
isTesting = false;
Debug.Log("[TestManager] Test du niveau arrêté, joueur reset et caméra recentrée !");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 KiB

After

Width:  |  Height:  |  Size: 702 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 KiB

After

Width:  |  Height:  |  Size: 616 KiB

View File

@ -32,7 +32,7 @@ rectangle "Menu Pause" {
rectangle "Création de niveaux" {
usecase "Créer un nouveau niveau" as CreerNouveauNiveau
usecase "Modifier un niveau existante" as ModifierNiveau
usecase "Modifier un niveau existant" as ModifierNiveau
usecase "Tester un niveau" as TesterNiveau
usecase "Exporter un niveau" as ExporterNiveau
}

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,16 @@
{
"dependencies": {
"com.unity.collab-proxy": "2.6.0",
"com.unity.collab-proxy": "2.8.1",
"com.unity.feature.2d": "2.0.1",
"com.unity.ide.rider": "3.0.31",
"com.unity.ide.visualstudio": "2.0.22",
"com.unity.inputsystem": "1.11.2",
"com.unity.ide.rider": "3.0.36",
"com.unity.ide.visualstudio": "2.0.23",
"com.unity.inputsystem": "1.14.0",
"com.unity.multiplayer.center": "1.0.0",
"com.unity.test-framework": "1.4.5",
"com.unity.test-framework": "1.5.1",
"com.unity.timeline": "1.8.7",
"com.unity.toolchain.linux-x86_64": "2.0.10",
"com.unity.ugui": "2.0.0",
"com.unity.visualscripting": "1.9.4",
"com.unity.visualscripting": "1.9.6",
"com.yasirkula.simplefilebrowser": "https://github.com/yasirkula/UnitySimpleFileBrowser.git",
"com.unity.modules.accessibility": "1.0.0",
"com.unity.modules.ai": "1.0.0",

View File

@ -1,11 +1,11 @@
{
"dependencies": {
"com.unity.2d.animation": {
"version": "10.1.3",
"version": "10.1.4",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.2d.common": "9.0.6",
"com.unity.2d.common": "9.0.7",
"com.unity.2d.sprite": "1.0.0",
"com.unity.collections": "1.2.4",
"com.unity.modules.animation": "1.0.0",
@ -14,7 +14,7 @@
"url": "https://packages.unity.com"
},
"com.unity.2d.aseprite": {
"version": "1.1.6",
"version": "1.1.9",
"depth": 1,
"source": "registry",
"dependencies": {
@ -26,7 +26,7 @@
"url": "https://packages.unity.com"
},
"com.unity.2d.common": {
"version": "9.0.6",
"version": "9.0.7",
"depth": 2,
"source": "registry",
"dependencies": {
@ -62,11 +62,11 @@
"dependencies": {}
},
"com.unity.2d.spriteshape": {
"version": "10.0.6",
"version": "10.0.7",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.2d.common": "9.0.5",
"com.unity.2d.common": "9.0.7",
"com.unity.mathematics": "1.1.0",
"com.unity.modules.physics2d": "1.0.0"
},
@ -82,11 +82,10 @@
}
},
"com.unity.2d.tilemap.extras": {
"version": "4.0.2",
"version": "4.1.0",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0",
"com.unity.2d.tilemap": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
@ -94,7 +93,7 @@
"url": "https://packages.unity.com"
},
"com.unity.burst": {
"version": "1.8.18",
"version": "1.8.21",
"depth": 3,
"source": "registry",
"dependencies": {
@ -104,7 +103,7 @@
"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "2.6.0",
"version": "2.8.1",
"depth": 0,
"source": "registry",
"dependencies": {},
@ -125,27 +124,26 @@
"com.unity.ext.nunit": {
"version": "2.0.5",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
"source": "builtin",
"dependencies": {}
},
"com.unity.feature.2d": {
"version": "2.0.1",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.2d.animation": "10.1.3",
"com.unity.2d.animation": "10.1.4",
"com.unity.2d.pixel-perfect": "5.0.3",
"com.unity.2d.psdimporter": "9.0.3",
"com.unity.2d.sprite": "1.0.0",
"com.unity.2d.spriteshape": "10.0.6",
"com.unity.2d.spriteshape": "10.0.7",
"com.unity.2d.tilemap": "1.0.0",
"com.unity.2d.tilemap.extras": "4.0.2",
"com.unity.2d.aseprite": "1.1.6"
"com.unity.2d.tilemap.extras": "4.1.0",
"com.unity.2d.aseprite": "1.1.9"
}
},
"com.unity.ide.rider": {
"version": "3.0.31",
"version": "3.0.36",
"depth": 0,
"source": "registry",
"dependencies": {
@ -154,7 +152,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.22",
"version": "2.0.23",
"depth": 0,
"source": "registry",
"dependencies": {
@ -163,7 +161,7 @@
"url": "https://packages.unity.com"
},
"com.unity.inputsystem": {
"version": "1.11.2",
"version": "1.14.0",
"depth": 0,
"source": "registry",
"dependencies": {
@ -210,22 +208,21 @@
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.4.5",
"version": "1.5.1",
"depth": 0,
"source": "registry",
"source": "builtin",
"dependencies": {
"com.unity.ext.nunit": "2.0.3",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
}
},
"com.unity.test-framework.performance": {
"version": "3.0.3",
"version": "3.1.0",
"depth": 3,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.31",
"com.unity.test-framework": "1.1.33",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
@ -262,7 +259,7 @@
}
},
"com.unity.visualscripting": {
"version": "1.9.4",
"version": "1.9.6",
"depth": 0,
"source": "registry",
"dependencies": {

View File

@ -17,6 +17,17 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/LevelScene.unity
guid: 8c9cfa26abfee488c85f1582747f6a02
- enabled: 1
path: Assets/Scenes/ImportScene.unity
guid: 079203ac02d460d48a1208a03134d373
- enabled: 1
path: Assets/Scenes/EditorChoiceScene.unity
guid: 200c916866fde6f4bb0123b72f22771f
- enabled: 1
path: Assets/Scenes/SelectLevelToEditScene.unity
guid: 2fabb6c6015f46541a57baf21011fa51
- enabled: 1
path: Assets/Scenes/CreateLevelScene.unity
- enabled: 0
path: Assets/Scenes/LevelEditorScene.unity
guid: 73b983a44d701df4bb6d8ceb94e05a2b

View File

@ -3,12 +3,12 @@
--- !u!19 &1
Physics2DSettings:
m_ObjectHideFlags: 0
serializedVersion: 5
serializedVersion: 6
m_Gravity: {x: 0, y: -9.81}
m_DefaultMaterial: {fileID: 0}
m_VelocityIterations: 8
m_PositionIterations: 3
m_VelocityThreshold: 1
m_BounceThreshold: 1
m_MaxLinearCorrection: 0.2
m_MaxAngularCorrection: 8
m_MaxTranslationSpeed: 100
@ -19,6 +19,7 @@ Physics2DSettings:
m_LinearSleepTolerance: 0.01
m_AngularSleepTolerance: 2
m_DefaultContactOffset: 0.01
m_ContactThreshold: 0
m_JobOptions:
serializedVersion: 2
useMultithreading: 0
@ -39,18 +40,17 @@ Physics2DSettings:
m_IslandSolverBodiesPerJob: 50
m_IslandSolverContactsPerJob: 50
m_SimulationMode: 0
m_SimulationLayers:
serializedVersion: 2
m_Bits: 4294967295
m_MaxSubStepCount: 4
m_MinSubStepFPS: 30
m_UseSubStepping: 0
m_UseSubStepContacts: 0
m_QueriesHitTriggers: 1
m_QueriesStartInColliders: 1
m_CallbacksOnDisable: 1
m_ReuseCollisionCallbacks: 1
m_AutoSyncTransforms: 0
m_AlwaysShowColliders: 0
m_ShowColliderSleep: 1
m_ShowColliderContacts: 0
m_ShowColliderAABB: 0
m_ContactArrowScale: 0.2
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
m_GizmoOptions: 8
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

View File

@ -42,8 +42,8 @@ PlayerSettings:
m_SplashScreenLogos: []
m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 1920
defaultScreenHeight: 1080
defaultScreenWidth: 1280
defaultScreenHeight: 720
defaultScreenWidthWeb: 960
defaultScreenHeightWeb: 600
m_StereoRenderingPath: 0
@ -91,8 +91,8 @@ PlayerSettings:
submitAnalytics: 1
usePlayerLog: 1
dedicatedServerOptimizations: 1
bakeCollisionMeshes: 0
forceSingleInstance: 0
bakeCollisionMeshes: 1
forceSingleInstance: 1
useFlipModelSwapchain: 1
resizableWindow: 0
useMacAppStoreValidation: 0
@ -105,7 +105,7 @@ PlayerSettings:
xboxEnableKinectAutoTracking: 0
xboxEnableFitness: 0
visibleInBackground: 1
allowFullscreenSwitch: 1
allowFullscreenSwitch: 0
fullscreenMode: 3
xboxSpeechDB: 0
xboxEnableHeadOrientation: 0
@ -140,7 +140,7 @@ PlayerSettings:
loadStoreDebugModeEnabled: 0
visionOSBundleVersion: 1.0
tvOSBundleVersion: 1.0
bundleVersion: v1.0.0-staging.3
bundleVersion: v1.0.2
preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0
@ -673,7 +673,8 @@ PlayerSettings:
webGLWebAssemblyBigInt: 0
webGLCloseOnQuit: 0
webWasm2023: 0
scriptingDefineSymbols: {}
scriptingDefineSymbols:
Server: -306
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend:
@ -698,7 +699,7 @@ PlayerSettings:
tvOS: 1
incrementalIl2cppBuild: {}
suppressCommonWarnings: 1
allowUnsafeCode: 0
allowUnsafeCode: 1
useDeterministicCompilation: 1
additionalIl2CppArgs:
scriptingRuntimeVersion: 1

View File

@ -1,2 +1,2 @@
m_EditorVersion: 6000.0.25f1
m_EditorVersionWithRevision: 6000.0.25f1 (4859ab7b5a49)
m_EditorVersion: 6000.0.49f1
m_EditorVersionWithRevision: 6000.0.49f1 (840e0a9776d9)

View File

@ -6,7 +6,7 @@ QualitySettings:
serializedVersion: 5
m_CurrentQuality: 5
m_QualitySettings:
- serializedVersion: 2
- serializedVersion: 4
name: Very Low
pixelLightCount: 0
shadows: 0
@ -19,16 +19,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 1
textureQuality: 1
globalTextureMipmapLimit: 1
textureMipmapLimitSettings: []
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 0
realtimeGICPUUsage: 25
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 0.3
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -41,8 +48,17 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
- serializedVersion: 2
- serializedVersion: 4
name: Low
pixelLightCount: 0
shadows: 0
@ -55,16 +71,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 2
textureQuality: 0
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 0
realtimeGICPUUsage: 25
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 0.4
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -77,8 +100,17 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
- serializedVersion: 2
- serializedVersion: 4
name: Medium
pixelLightCount: 1
shadows: 1
@ -91,16 +123,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
skinWeights: 2
textureQuality: 0
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 1
realtimeGICPUUsage: 25
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 0.7
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -113,8 +152,17 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
- serializedVersion: 2
- serializedVersion: 4
name: High
pixelLightCount: 2
shadows: 2
@ -127,16 +175,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
skinWeights: 2
textureQuality: 0
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 1
realtimeGICPUUsage: 50
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 1
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -149,8 +204,17 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
- serializedVersion: 2
- serializedVersion: 4
name: Very High
pixelLightCount: 3
shadows: 2
@ -163,16 +227,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
skinWeights: 4
textureQuality: 0
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 1
realtimeGICPUUsage: 50
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 1.5
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -185,8 +256,17 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
- serializedVersion: 2
- serializedVersion: 4
name: Ultra
pixelLightCount: 4
shadows: 2
@ -199,16 +279,23 @@ QualitySettings:
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
skinWeights: 255
textureQuality: 0
globalTextureMipmapLimit: 0
textureMipmapLimitSettings: []
anisotropicTextures: 2
antiAliasing: 0
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
useLegacyDetailDistribution: 1
adaptiveVsync: 0
vSyncCount: 1
realtimeGICPUUsage: 100
adaptiveVsyncExtraA: 0
adaptiveVsyncExtraB: 0
lodBias: 2
maximumLODLevel: 0
enableLODCrossFade: 1
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
@ -221,15 +308,26 @@ QualitySettings:
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
customRenderPipeline: {fileID: 0}
terrainQualityOverrides: 0
terrainPixelError: 1
terrainDetailDensityScale: 1
terrainBasemapDistance: 1000
terrainDetailDistance: 80
terrainTreeDistance: 5000
terrainBillboardStart: 50
terrainFadeLength: 5
terrainMaxTrees: 50
excludedTargetPlatforms: []
m_TextureMipmapLimitGroupNames: []
m_PerPlatformDefaultQuality:
Android: 2
Lumin: 5
GameCoreScarlett: 5
GameCoreXboxOne: 5
Lumin: 5
Nintendo Switch: 5
PS4: 5
PS5: 5
Server: 0
Stadia: 5
Standalone: 5
WebGL: 3

View File

@ -18,7 +18,7 @@ TagManager:
- PortalButtonGroup
- BonusBoostSpeed
- BonusSlowSpeed
- Ground
- AICollider
layers:
- Default
- TransparentFX

View File

@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 53
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3}
m_Name:
m_EditorClassIdentifier:
assetDefaultFramerate: 60
m_DefaultFrameRate: 60

View File

@ -4,6 +4,12 @@
Développement d'une reproduction du jeu [Geometry Dash](https://fr.wikipedia.org/wiki/Geometry_Dash) réalisé dans le cadre de la formation [Ingénieur en Informatique et Systèmes d'Information (SI), CNAM](https://www.itii-alsace.fr/formations/informatique-et-systemes-dinformation-le-cnam/), pour les modules de Programmation Orientée Objet (POO) et de Méthodologie Systèmes d'Informations.
Afin de tester le jeu, plusieurs `.zip` avec l'exécutable sont disponibles, généré automatiquement grâce au déploiement continu de [GameCI](https://game.ci/), en fonction du système d'exploitation:
- [Windows (x64)](https://github.com/boudji-ludwig-pett/cnam-geometry-dash/releases/download/v1.0.2/windows.zip)
- [GNU/Linux (x64)](https://github.com/boudji-ludwig-pett/cnam-geometry-dash/releases/download/v1.0.2/linux.zip)
- [macOS (x64)](https://github.com/boudji-ludwig-pett/cnam-geometry-dash/releases/download/v1.0.2/macOS.zip)
### Membres du groupe
- [Djelal BOUDJI](https://github.com/djelalb)
@ -22,7 +28,7 @@ Développement d'une reproduction du jeu [Geometry Dash](https://fr.wikipedia.or
## Prérequis
[Unity](https://unity.com/) v6000.0.25f1 (LTS)
[Unity](https://unity.com/) v6000.0.49f1 (LTS)
## Installation
@ -43,3 +49,5 @@ cd cnam-geometry-dash
![Gameplay](./Documentation/Screenshots/gameplay.png)
![Levels selection](./Documentation/Screenshots/levels-selection.png)
![Edit Level](./Documentation/Screenshots/edit-level.png)