Merge pull request 'morepuzzles' (#6) from morepuzzles into main
All checks were successful
Build project / Build for (StandaloneLinux64, 6000.0.37f1) (push) Successful in 8m43s
Build project / Build for (StandaloneWindows64, 6000.0.37f1) (push) Successful in 7m31s
Build project / Publish to itch.io (StandaloneLinux64) (push) Successful in 21s
Build project / Publish to itch.io (StandaloneWindows64) (push) Successful in 20s

Reviewed-on: #6
This commit is contained in:
EthanPisani 2025-04-20 23:07:22 -04:00
commit 4f1fa31abe
62 changed files with 41886 additions and 1631 deletions

View File

@ -302,6 +302,10 @@ public class ControlScript : MonoBehaviour {
/// Restart the game
/// </summary>
public void Restart() {
if (_tiles == null)
return;
if (_tiles.Length == 0)
return;
foreach (var tile in _tiles) {
Destroy(tile);
}
@ -492,7 +496,7 @@ private void CreateTiles() {
/// Is called whenever GameState is altered
/// </summary>
private void OnGameStateChange() {
switch (_gameState) {
switch (GameState) {
case EGameState.Lose: // Actions to do when lost
//StateButton.LoseState();
StateButton.sprite = StateButton.GetComponent<StateButtonScript>().LoseSprite;
@ -500,6 +504,7 @@ private void CreateTiles() {
DisablePlayField();
break;
case EGameState.Win: // Actions to do when won
Debug.Log("You won!");
//StateButton.WinState();
StateButton.sprite = StateButton.GetComponent<StateButtonScript>().WinSprite;
DisablePlayField();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &959971375585652767
--- !u!1 &8299965232727738621
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -8,8 +8,8 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7739536703667390582}
- component: {fileID: -4703862515620996004}
- component: {fileID: 52846165173590012}
- component: {fileID: 3386004437024417690}
m_Layer: 5
m_Name: LinePrefab
m_TagString: Untagged
@ -17,29 +17,29 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7739536703667390582
--- !u!4 &52846165173590012
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 959971375585652767}
m_GameObject: {fileID: 8299965232727738621}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_LocalScale: {x: 40, y: 40, z: 40}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &-4703862515620996004
--- !u!120 &3386004437024417690
LineRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 959971375585652767}
m_GameObject: {fileID: 8299965232727738621}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
@ -53,10 +53,10 @@ LineRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 4
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 95d691d1ae476e049b3ca1db2f7b4c0d, type: 2}
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@ -82,13 +82,13 @@ LineRenderer:
- {x: 0, y: 0, z: 1}
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
widthMultiplier: 0.05
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0.18181992
value: 0.10416603
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
@ -100,8 +100,8 @@ LineRenderer:
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 1, g: 1, b: 1, a: 1}
key0: {r: 0.8805031, g: 0.11352392, b: 0.1815179, a: 1}
key1: {r: 0.8805031, g: 0.11352392, b: 0.1815179, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
@ -124,11 +124,11 @@ LineRenderer:
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_Mode: 1
m_ColorSpace: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 1
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ed614cb2b39e874ab80285050f80fbf5
guid: 309050a344950a3449bfbe234b084a16
PrefabImporter:
externalObjects: {}
userData:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -1,233 +0,0 @@
fileFormatVersion: 2
guid: f8bdf4538e33aabae8cae2f2b04af7c7
TextureImporter:
internalIDToNameTable:
- first:
213: -2413806693520163455
second: Circle
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: 256
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: 0
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 1
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
- serializedVersion: 4
buildTarget: iOS
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: Circle
rect:
serializedVersion: 2
x: 0
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline:
- - {x: 33, y: 128}
- {x: -33, y: 128}
- {x: -95, y: 95}
- {x: -128, y: 33}
- {x: -128, y: -33}
- {x: -95, y: -95}
- {x: -33, y: -128}
- {x: 33, y: -128}
- {x: 95, y: -95}
- {x: 128, y: -33}
- {x: 128, y: 33}
- {x: 95, y: 95}
physicsShape:
- - {x: 0, y: 128}
- {x: -39, y: 121}
- {x: -75, y: 103}
- {x: -103, y: 75}
- {x: -121, y: 39}
- {x: -128, y: 0}
- {x: -121, y: -39}
- {x: -103, y: -75}
- {x: -75, y: -103}
- {x: -39, y: -121}
- {x: 0, y: -128}
- {x: 39, y: -121}
- {x: 75, y: -103}
- {x: 103, y: -75}
- {x: 121, y: -39}
- {x: 128, y: 0}
- {x: 121, y: 39}
- {x: 103, y: 75}
- {x: 75, y: 103}
- {x: 39, y: 121}
tessellationDetail: 0
bones: []
spriteID: 18d3544e99f608ed0800000000000000
internalID: -2413806693520163455
vertices: []
indices:
edges: []
weights: []
outline:
- - {x: 33, y: 128}
- {x: -33, y: 128}
- {x: -95, y: 95}
- {x: -128, y: 33}
- {x: -128, y: -33}
- {x: -95, y: -95}
- {x: -33, y: -128}
- {x: 33, y: -128}
- {x: 95, y: -95}
- {x: 128, y: -33}
- {x: 128, y: 33}
- {x: 95, y: 95}
customData:
physicsShape:
- - {x: 0, y: 128}
- {x: -39, y: 121}
- {x: -75, y: 103}
- {x: -103, y: 75}
- {x: -121, y: 39}
- {x: -128, y: 0}
- {x: -121, y: -39}
- {x: -103, y: -75}
- {x: -75, y: -103}
- {x: -39, y: -121}
- {x: 0, y: -128}
- {x: 39, y: -121}
- {x: 75, y: -103}
- {x: 103, y: -75}
- {x: 121, y: -39}
- {x: 128, y: 0}
- {x: 121, y: 39}
- {x: 103, y: 75}
- {x: 75, y: 103}
- {x: 39, y: 121}
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Circle: -2413806693520163455
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &959971375585652767
--- !u!1 &9063511274317546134
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -8,8 +8,10 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7739536703667390582}
- component: {fileID: -1385066238260059775}
- component: {fileID: 5368770168816344344}
- component: {fileID: 3750786645599238705}
- component: {fileID: 2368334114180051338}
- component: {fileID: 7940451848550998055}
m_Layer: 5
m_Name: PointPrefab
m_TagString: Untagged
@ -17,28 +19,28 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7739536703667390582
--- !u!4 &5368770168816344344
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 959971375585652767}
m_GameObject: {fileID: 9063511274317546134}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalScale: {x: 200, y: 200, z: 200}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &-1385066238260059775
--- !u!212 &3750786645599238705
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 959971375585652767}
m_GameObject: {fileID: 9063511274317546134}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@ -52,10 +54,10 @@ SpriteRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 4
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@ -76,14 +78,65 @@ SpriteRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: -2413806693520163455, guid: f8bdf4538e33aabae8cae2f2b04af7c7, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Color: {r: 0.9273837, g: 0.9372549, b: 0, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_Size: {x: 0.2, y: 0.2}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!58 &2368334114180051338
CircleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9063511274317546134}
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: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_Radius: 0.5
--- !u!114 &7940451848550998055
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9063511274317546134}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a2576d4090b96f542a3fd9afb4387f5d, type: 3}
m_Name:
m_EditorClassIdentifier:
id: 0
manager: {fileID: 0}
uiOverlayCamera: {fileID: 0}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 75fe5bf1a42eca40692a206e44b0c1b9
guid: d5fb5cd996a5f2444964d8293dbf076a
PrefabImporter:
externalObjects: {}
userData:

View File

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

View File

@ -0,0 +1,125 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 1
m_PVRFilteringGaussRadiusAO: 1
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots: []

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1,19 @@
using UnityEngine;
[System.Serializable]
public class Connection
{
public Point a, b;
public LineRenderer line;
public void UpdateLine()
{
line.SetPosition(0, a.transform.position);
line.SetPosition(1, b.transform.position);
}
public bool SharesPointWith(Connection other)
{
return a == other.a || a == other.b || b == other.a || b == other.b;
}
}

View File

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

View File

@ -0,0 +1,49 @@
using UnityEngine;
using UnityEngine.Rendering.Universal;
using System.Linq; // for FirstOrDefault()
public class Point : MonoBehaviour
{
public int id;
public UntangleGameManager manager;
// optional: assign in inspector or else we'll try to find it
[SerializeField] private Camera uiOverlayCamera;
private Vector3 offset;
void Awake()
{
if (uiOverlayCamera == null && Camera.main != null)
{
var extra = Camera.main.GetComponent<UniversalAdditionalCameraData>();
if (extra != null)
{
// look for the camera named "UIOverlayCamera"
uiOverlayCamera = extra.cameraStack
.FirstOrDefault(cam => cam.name == "UIOverlayCamera");
}
}
}
void OnMouseDown()
{
// pick UI overlay if we have it, otherwise fallback
var cam = uiOverlayCamera != null ? uiOverlayCamera : Camera.main;
Vector3 worldPoint = cam.ScreenToWorldPoint(Input.mousePosition);
// worldPoint.z = 0;
offset = transform.position - worldPoint;
Debug.Log($"Point {id} clicked. Offset (from {cam.name}): {offset}");
}
void OnMouseDrag()
{
var cam = uiOverlayCamera != null ? uiOverlayCamera : Camera.main;
Vector3 raw = cam.ScreenToWorldPoint(Input.mousePosition);
raw.z = 0;
transform.position = raw + offset;
manager.CheckIfSolved();
foreach (var c in manager.connections)
c.UpdateLine();
}
}

View File

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

View File

@ -1,348 +0,0 @@
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using TMPro;
public class UntangleGame : MonoBehaviour
{
public class Point
{
public float x, y;
public GameObject visual;
public int index;
}
public class Edge
{
public int a, b; // indices of connected points
public bool isCrossed;
public LineRenderer line;
}
[Header("Game Objects")]
public GameObject pointPrefab;
public LineRenderer edgePrefab;
[Header("Game Settings")]
public int pointCount = 10;
public float playAreaSize = 8f;
[Header("Colors")]
public Color normalEdgeColor = Color.black;
public Color crossedEdgeColor = Color.red;
public Color pointColor = Color.blue;
public Color dragPointColor = Color.white;
public Color cursorPointColor = Color.gray;
public Color neighborPointColor = Color.red;
[Header("Visual Settings")]
public float pointRadius = 0.2f;
public float dragThreshold = 0.5f;
[Header("Options")]
public bool snapToGrid = false;
public bool showCrossedEdges = true;
public bool showVertexNumbers = false;
private List<Point> points = new List<Point>();
private List<Edge> edges = new List<Edge>();
private int draggedPoint = -1;
private int cursorPoint = -1;
private bool isSolved = false;
private Camera mainCamera;
private Material lineMaterial;
void Start()
{
mainCamera = Camera.main;
// Create material for lines to prevent pink color
lineMaterial = new Material(Shader.Find("UI/Default"));
lineMaterial.color = normalEdgeColor;
GenerateGame();
}
void GenerateGame()
{
// Clear existing game
foreach (Point p in points)
{
if (p.visual != null) Destroy(p.visual);
}
foreach (Edge e in edges)
{
if (e.line != null) Destroy(e.line.gameObject);
}
points.Clear();
edges.Clear();
isSolved = false;
// Create points in a circle (local space)
for (int i = 0; i < pointCount; i++)
{
float angle = i * 2 * Mathf.PI / pointCount;
Point p = new Point
{
x = Mathf.Sin(angle) * playAreaSize * 0.4f,
y = Mathf.Cos(angle) * playAreaSize * 0.4f,
index = i
};
points.Add(p);
}
// Create edges (simplified planar graph)
for (int i = 0; i < pointCount; i++)
{
int connections = Mathf.Min(3, pointCount - i - 1);
for (int j = 1; j <= connections; j++)
{
int k = (i + j) % pointCount;
edges.Add(new Edge { a = i, b = k });
}
}
CreateVisuals();
CheckCrossings();
}
void CreateVisuals()
{
// Create point visuals
foreach (Point p in points)
{
p.visual = Instantiate(pointPrefab, transform);
p.visual.transform.localPosition = new Vector3(p.x, p.y, 0);
p.visual.transform.localScale = Vector3.one * pointRadius * 2;
if (showVertexNumbers)
{
Text text = p.visual.GetComponentInChildren<Text>();
if (text != null)
{
text.text = p.index.ToString();
text.enabled = showVertexNumbers;
}
}
}
// Create edge visuals
foreach (Edge e in edges)
{
e.line = Instantiate(edgePrefab, transform);
e.line.useWorldSpace = false;
e.line.material = lineMaterial;
e.line.startWidth = 0.1f;
e.line.endWidth = 0.1f;
UpdateEdgeVisual(e);
}
}
void UpdateEdgeVisual(Edge e)
{
Point a = points[e.a];
Point b = points[e.b];
e.line.startColor = e.isCrossed && showCrossedEdges ? crossedEdgeColor : normalEdgeColor;
e.line.endColor = e.line.startColor;
e.line.SetPosition(0, new Vector3(a.x, a.y, 0));
e.line.SetPosition(1, new Vector3(b.x, b.y, 0));
}
void Update()
{
HandleInput();
UpdateVisuals();
}
void HandleInput()
{
Vector2 localMousePos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
GetComponent<RectTransform>(),
Input.mousePosition,
mainCamera,
out localMousePos);
Debug.Log($"Mouse Position: {localMousePos}");
if (Input.GetMouseButtonDown(0))
{
int closest = FindClosestPoint(localMousePos);
if (closest != -1) draggedPoint = closest;
}
else if (Input.GetMouseButton(0) && draggedPoint != -1)
{
if (snapToGrid)
{
float gridSize = playAreaSize / (pointCount - 1);
points[draggedPoint].x = Mathf.Round(localMousePos.x / gridSize) * gridSize;
points[draggedPoint].y = Mathf.Round(localMousePos.y / gridSize) * gridSize;
}
else
{
points[draggedPoint].x = localMousePos.x;
points[draggedPoint].y = localMousePos.y;
}
// Keep within bounds
points[draggedPoint].x = Mathf.Clamp(points[draggedPoint].x, -playAreaSize/2, playAreaSize/2);
points[draggedPoint].y = Mathf.Clamp(points[draggedPoint].y, -playAreaSize/2, playAreaSize/2);
CheckCrossings();
}
else if (Input.GetMouseButtonUp(0))
{
draggedPoint = -1;
}
else
{
cursorPoint = FindClosestPoint(localMousePos);
}
}
int FindClosestPoint(Vector2 localPosition)
{
int closest = -1;
float minDist = float.MaxValue;
for (int i = 0; i < points.Count; i++)
{
float dist = Vector2.Distance(localPosition, new Vector2(points[i].x, points[i].y));
Debug.Log($"Point {i}: Distance {dist}");
if (dist < dragThreshold && dist < minDist)
{
minDist = dist;
closest = i;
}
}
Debug.Log($"Closest point: {closest} at distance {minDist}");
return closest;
}
void UpdateVisuals()
{
// Update point positions
for (int i = 0; i < points.Count; i++)
{
Point p = points[i];
p.visual.transform.localPosition = new Vector3(p.x, p.y, 0);
// Update point color
Image img = p.visual.GetComponent<Image>();
if (img != null)
{
if (i == draggedPoint)
img.color = dragPointColor;
else if (i == cursorPoint)
img.color = cursorPointColor;
else if (draggedPoint != -1 && IsConnected(draggedPoint, i))
img.color = neighborPointColor;
else
img.color = pointColor;
}
}
// Update edges
foreach (Edge e in edges)
{
UpdateEdgeVisual(e);
}
}
bool IsConnected(int a, int b)
{
foreach (Edge e in edges)
{
if ((e.a == a && e.b == b) || (e.a == b && e.b == a))
return true;
}
return false;
}
void CheckCrossings()
{
bool anyCrossings = false;
// Reset all edges
foreach (Edge e in edges)
{
e.isCrossed = false;
}
// Check all edge pairs for crossings
for (int i = 0; i < edges.Count; i++)
{
Edge e1 = edges[i];
Point a1 = points[e1.a];
Point a2 = points[e1.b];
for (int j = i + 1; j < edges.Count; j++)
{
Edge e2 = edges[j];
Point b1 = points[e2.a];
Point b2 = points[e2.b];
// Skip if edges share a point
if (e1.a == e2.a || e1.a == e2.b || e1.b == e2.a || e1.b == e2.b)
continue;
if (DoLinesIntersect(a1, a2, b1, b2))
{
e1.isCrossed = true;
e2.isCrossed = true;
anyCrossings = true;
}
}
}
isSolved = !anyCrossings;
}
bool DoLinesIntersect(Point a1, Point a2, Point b1, Point b2)
{
Vector2 p1 = new Vector2(a1.x, a1.y);
Vector2 p2 = new Vector2(a2.x, a2.y);
Vector2 p3 = new Vector2(b1.x, b1.y);
Vector2 p4 = new Vector2(b2.x, b2.y);
float d = (p2.x - p1.x) * (p4.y - p3.y) - (p2.y - p1.y) * (p4.x - p3.x);
if (d == 0) return false;
float u = ((p3.x - p1.x) * (p4.y - p3.y) - (p3.y - p1.y) * (p4.x - p3.x)) / d;
float v = ((p3.x - p1.x) * (p2.y - p1.y) - (p3.y - p1.y) * (p2.x - p1.x)) / d;
return (u >= 0) && (u <= 1) && (v >= 0) && (v <= 1);
}
public void OnSnapToGridToggle(bool value)
{
snapToGrid = value;
}
public void OnShowCrossedEdgesToggle(bool value)
{
showCrossedEdges = value;
foreach (Edge e in edges)
{
UpdateEdgeVisual(e);
}
}
public void OnVertexNumbersToggle(bool value)
{
showVertexNumbers = value;
foreach (Point p in points)
{
Text text = p.visual.GetComponentInChildren<Text>();
if (text != null)
{
text.enabled = value;
}
}
}
public void OnRegenerateClick()
{
GenerateGame();
}
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 5c5e9a183c94351dbbfe349a667626ae

View File

@ -0,0 +1,273 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public enum UGameState
{
Uninitialized,
Playing,
Win,
Lose
}
public class UntangleGameManager : MonoBehaviour
{
[Header("Prefabs & Parents")]
public GameObject pointPrefab;
public LineRenderer linePrefab;
public Transform spawnParent;
[Header("UI Elements")]
public Text statusText;
// public GameObject winUI;
// public GameObject loseUI;
public Button newGameButton;
public Button solveButton;
[Header("Audio")]
public AudioClip winSound;
// public AudioClip loseSound;
[Header("Game Settings")]
public int pointCount = 10;
// Runtime state
public UGameState gameState = UGameState.Uninitialized;
private List<Point> points = new List<Point>();
public List<Connection> connections = new List<Connection>();
private Vector3[] solutionPositions;
private void Awake()
{
newGameButton.onClick.AddListener(StartGame);
solveButton.onClick.AddListener(AutoSolve);
}
private void Start()
{
StartGame();
}
public void SetGameState(UGameState state)
{
gameState = state;
}
public void StartGame()
{
ResetPuzzle();
}
public void ResetPuzzle()
{
gameState = UGameState.Uninitialized;
statusText.text = "Generating new game...";
GenerateRandomGame();
gameState = UGameState.Playing;
statusText.text = "";
}
void GenerateRandomGame()
{
ClearOldGame();
statusText.text = "";
points.Clear();
connections.Clear();
solutionPositions = new Vector3[pointCount];
// Step 1: Place points randomly (solution layout)
for (int i = 0; i < pointCount; i++)
{
Vector2 pos;
int tries = 0;
do
{
pos = Random.insideUnitCircle * 4f;
tries++;
if (tries > 1000) break;
}
while (IsTooClose(pos));
// instantiate as child of spawnParent
Vector3 worldPos = new Vector3(pos.x, pos.y, 0f);
GameObject obj = Instantiate(pointPrefab, worldPos, Quaternion.identity, spawnParent);
Point p = obj.GetComponent<Point>();
p.id = i;
p.manager = this;
points.Add(p);
solutionPositions[i] = worldPos;
}
// Step 2: Create a Minimum Spanning Tree (MST)
List<(int, int, float)> edges = new List<(int, int, float)>();
for (int i = 0; i < pointCount; i++)
{
for (int j = i + 1; j < pointCount; j++)
{
float dist = Vector2.Distance(points[i].transform.position, points[j].transform.position);
edges.Add((i, j, dist));
}
}
edges.Sort((a, b) => a.Item3.CompareTo(b.Item3));
int[] parent = new int[pointCount];
for (int i = 0; i < pointCount; i++) parent[i] = i;
int Find(int x) => parent[x] == x ? x : parent[x] = Find(parent[x]);
void Union(int x, int y) => parent[Find(x)] = Find(y);
int edgeCount = 0;
foreach (var (a, b, _) in edges)
{
if (Find(a) != Find(b))
{
Union(a, b);
AddConnection(a, b);
edgeCount++;
if (edgeCount == pointCount - 1) break;
}
}
// Step 3: Ensure every point has at least degree 2
int[] degrees = new int[pointCount];
foreach (var c in connections)
{
degrees[c.a.id]++;
degrees[c.b.id]++;
}
for (int i = 0; i < pointCount; i++)
{
while (degrees[i] < 2)
{
bool added = false;
// Try to add a non-crossing edge
for (int j = 0; j < pointCount; j++)
{
if (i == j || IsConnected(i, j)) continue;
Connection temp = new Connection { a = points[i], b = points[j] };
if (DoesIntersectAny(temp)) continue;
AddConnection(i, j);
degrees[i]++;
degrees[j]++;
added = true;
break;
}
// If no valid non-crossing edge found, allow one forced connection (rare case)
if (!added)
{
for (int j = 0; j < pointCount; j++)
{
if (i == j || IsConnected(i, j)) continue;
AddConnection(i, j);
degrees[i]++;
degrees[j]++;
break;
}
}
}
}
// Step 4: Shuffle point positions to create the puzzle
foreach (var p in points)
p.transform.localPosition = Random.insideUnitCircle * 400f; // localPosition keeps them under spawnParent
foreach (var c in connections)
c.UpdateLine();
}
private void AddConnection(int a, int b)
{
var c = new Connection { a = points[a], b = points[b] };
var lr = Instantiate(linePrefab, spawnParent);
c.line = lr;
c.UpdateLine();
connections.Add(c);
}
private bool IsConnected(int a, int b)
{
return connections.Exists(c =>
(c.a.id == a && c.b.id == b) ||
(c.a.id == b && c.b.id == a));
}
private bool DoesIntersectAny(Connection cand)
{
foreach (var c in connections)
{
if (cand.SharesPointWith(c)) continue;
if (LinesIntersect(cand, c)) return true;
}
return false;
}
private bool IsTooClose(Vector2 pos)
{
return points.Exists(p => Vector2.Distance(p.transform.position, pos) < 0.5f);
}
private void ClearOldGame()
{
foreach (var p in points) Destroy(p.gameObject);
foreach (var c in connections) Destroy(c.line.gameObject);
}
public void CheckIfSolved()
{
if (gameState != UGameState.Playing) return;
foreach (var c1 in connections)
foreach (var c2 in connections)
if (c1 != c2 && !c1.SharesPointWith(c2) && LinesIntersect(c1, c2))
return;
// no intersections found!
statusText.text = "Completed!";
// if (loseUI != null)
// loseUI.SetActive(false);
// if (winUI != null)
// winUI.SetActive(true);
SetGameState(UGameState.Win);
Debug.Log("Puzzle Untangle solved!");
if (winSound != null) {
SoundFXManager.instance.PlaySound(winSound, transform, 1f);
}
}
private void AutoSolve()
{
if (gameState != UGameState.Playing) return;
for (int i = 0; i < points.Count; i++)
points[i].transform.position = solutionPositions[i];
connections.ForEach(c => c.UpdateLine());
CheckIfSolved();
}
#region Lineintersection helpers
private bool LinesIntersect(Connection c1, Connection c2)
{
Vector2 p1 = c1.a.transform.position;
Vector2 q1 = c1.b.transform.position;
Vector2 p2 = c2.a.transform.position;
Vector2 q2 = c2.b.transform.position;
return DoIntersect(p1, q1, p2, q2);
}
private bool DoIntersect(Vector2 a, Vector2 b, Vector2 c, Vector2 d)
{
int o1 = Orientation(a, b, c);
int o2 = Orientation(a, b, d);
int o3 = Orientation(c, d, a);
int o4 = Orientation(c, d, b);
return o1 != o2 && o3 != o4;
}
private int Orientation(Vector2 a, Vector2 b, Vector2 c)
{
float v = (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y);
if (Mathf.Abs(v) < 1e-4f) return 0;
return (v > 0) ? 1 : 2;
}
#endregion
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3b4d8850cd43cad4fbba7540819becaa

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

34231
Assets/Scenes/level5.unity Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -19,6 +19,8 @@ public class DoorInteraction : MonoBehaviour
[SerializeField] private string overrideWord = string.Empty;
[SerializeField] private int simonSaysPuzzleIndex = 0;
[SerializeField] private int numPoints = 10;
[SerializeField] private TextMeshProUGUI targetDoorText = null;
[SerializeField] private UnityEngine.UI.Image tabletIcon = null;
[SerializeField] private GameObject closeTabletPrompt = null;
@ -130,10 +132,10 @@ public class DoorInteraction : MonoBehaviour
targetDoorText.text = "Target Door: " + sceneNumber + animationFile.Substring(animationFile.Length - 2);
}
if (!tabletController.isOnMainMenu && controlScript.GameState == EGameState.Uninitialized && !startedPuzzle)
if (!tabletController.isOnMainMenu && !startedPuzzle)
{
StartPuzzle(doorPuzzleType);
startedPuzzle = true;
StartPuzzle(doorPuzzleType);
}
}
}
@ -174,7 +176,7 @@ public class DoorInteraction : MonoBehaviour
{
if (interactionPrompt != null)
{
Debug.Log($"[TextPopUp] Request: '{text}', important={important}, currentImportant={isImportantPrompt}");
// Debug.Log($"[TextPopUp] Request: '{text}', important={important}, currentImportant={isImportantPrompt}");
if (!isImportantPrompt || important)
{
@ -226,6 +228,9 @@ public class DoorInteraction : MonoBehaviour
case TabletScreen.SimonSays:
tabletScript.SetScreenSimonSays(simonSaysPuzzleIndex);
break;
case TabletScreen.Untangle:
tabletScript.SetScreenUntangle(numPoints);
break;
}
StartCoroutine(WaitForPuzzleCompletion());

View File

@ -55,25 +55,32 @@ public class PickUpKeyCard : MonoBehaviour
if (!Input.GetMouseButtonDown(0)) return;
bool hasSpace = false;
foreach (var slot in playerInventory.slots)
if (slot == null) { hasSpace = true; break; }
if (!hasSpace)
if (playerInventory != null)
{
Debug.Log("Inventory is full!");
if (interactionPrompt) interactionPrompt.text = "Inventory full!";
return;
}
foreach (var slot in playerInventory.slots)
if (slot == null) { hasSpace = true; break; }
if (!hasSpace)
{
Debug.Log("Inventory is full!");
if (interactionPrompt) interactionPrompt.text = "Inventory full!";
return;
}
}
isPickedUp = true;
if (isKeyCard && keyCardPlayer != null)
keyCardPlayer.hasKeyCard = true;
playerInventory.AddItem(keyCardItem);
FindObjectOfType<InventoryUI>()?.RefreshUI();
Destroy(gameObject);
outline.enabled = false;
if (playerInventory != null)
{
playerInventory.AddItem(keyCardItem);
FindObjectOfType<InventoryUI>()?.RefreshUI();
Destroy(gameObject);
}
if (outline) outline.enabled = false;
interactionPrompt.enabled = false;
objectAnimator?.Play(animationName, 0, 0);
if (pickupSound) SoundFXManager.instance.PlaySound(pickupSound, transform, 1.5f);

View File

@ -15,3 +15,4 @@ MonoBehaviour:
itemName: Clickinorder
itemIcon: {fileID: 21300000, guid: ae600fc3261ad214e8d0fea2e9814db5, type: 3}
itemPrefab: {fileID: 8988288550564699726, guid: 56a57c82158b9874eb02de81af87fcb1, type: 3}
isKeyCard: 0

View File

@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 9d572cf34af0fc14981c6699e965994d, type: 3}
m_Name: GuessTheWord
m_EditorClassIdentifier:
itemName: GuessTheWord
itemIcon: {fileID: 21300000, guid: ae600fc3261ad214e8d0fea2e9814db5, type: 3}
itemPrefab: {fileID: 8988288550564699726, guid: 56a57c82158b9874eb02de81af87fcb1, type: 3}
isKeyCard: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e782766c514fbcdbbbe17ef0dfd723e9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 9d572cf34af0fc14981c6699e965994d, type: 3}
m_Name: KeyCardItem_blue
m_EditorClassIdentifier:
itemName: Red Card
itemIcon: {fileID: 21300000, guid: 9972f130bf5d27a53b2ce7051ac2d5be, type: 3}
itemPrefab: {fileID: 8924941041106658507, guid: ebab6da28adb8feaabf325369258f46c, type: 3}
isKeyCard: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 42737e55c45f9b2e09928be6cd934406
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -15,3 +15,4 @@ MonoBehaviour:
itemName: Red Card
itemIcon: {fileID: 21300000, guid: e9d08f64433b30ff680fa90c316f4e5b, type: 3}
itemPrefab: {fileID: 8924941041106658507, guid: 2f261fc6f440ae937ac1858cdc41b7ca, type: 3}
isKeyCard: 1

View File

@ -15,3 +15,4 @@ MonoBehaviour:
itemName: Red Card
itemIcon: {fileID: 21300000, guid: 839d951c18cf6ae88aab372a39d87694, type: 3}
itemPrefab: {fileID: 8924941041106658507, guid: 9978c9c43cf7bfb4ba426c30b5c569b2, type: 3}
isKeyCard: 1

View File

@ -13,5 +13,6 @@ MonoBehaviour:
m_Name: USBStickItem
m_EditorClassIdentifier:
itemName: USB Stick
itemIcon: {fileID: 21300000, guid: 1d5d46cffb17f694987ced466c5888e3, type: 3}
itemIcon: {fileID: 21300000, guid: ae600fc3261ad214e8d0fea2e9814db5, type: 3}
itemPrefab: {fileID: 8988288550564699726, guid: 56a57c82158b9874eb02de81af87fcb1, type: 3}
isKeyCard: 0

View File

@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 9d572cf34af0fc14981c6699e965994d, type: 3}
m_Name: Untangle Item
m_EditorClassIdentifier:
itemName: Untangle
itemIcon: {fileID: 21300000, guid: ae600fc3261ad214e8d0fea2e9814db5, type: 3}
itemPrefab: {fileID: 8988288550564699726, guid: 56a57c82158b9874eb02de81af87fcb1, type: 3}
isKeyCard: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a5b7278d6f24408f298ca2c581b95cc4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: df8cba3646a3088248e66c6359dfe64b
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: f56781540b9eec0029bac3eb607cb7e3
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: 814e758bbc913afc69d5e94943bfd347
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: 3d947d3ba6b55b2a495060b825d2dbd8
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

@ -61,7 +61,7 @@ Material:
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 0.38857278, g: 0.38857278, b: 0.38857278, a: 1}
- _EmissionColor: {r: 128, g: 128, b: 128, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,70 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3892100927087704966
MonoBehaviour:
m_ObjectHideFlags: 11
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Card_model Variant Variant Variant 1 Variant
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 2100000, guid: 87ea55cdb53430d49966b7e3c2b6a88a, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _METALLICSPECGLOSSMAP
- _NORMALMAP
- _PARALLAXMAP
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: e1e5f117815af0728a020a2886730980, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: e58d6a53b280c66df879148820f2458e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: e1e5f117815af0728a020a2886730980, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: 6fbd763fe3f00536f9e030649d413d8f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 2800000, guid: e7e733be36e18ad56b305d9d13b00b09, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats: []
m_Colors:
- _BaseColor: {r: 0.28235292, g: 0.7433272, b: 0.8666667, a: 1}
- _Color: {r: 0.2823529, g: 0.7433272, b: 0.8666667, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3268b8b98fdcb3c62a1b624d5d5446a3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,165 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3839894878138069533
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2850537304662550584}
- component: {fileID: 190948566412933862}
- component: {fileID: 4691833975505319639}
m_Layer: 0
m_Name: Card_Mesh
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2850537304662550584
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3839894878138069533}
serializedVersion: 2
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3101798197347461516}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &190948566412933862
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3839894878138069533}
m_Mesh: {fileID: 4821974255002996250, guid: 6945c9e5b5bb56266b0c5b76ef62b8aa, type: 3}
--- !u!23 &4691833975505319639
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3839894878138069533}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 3268b8b98fdcb3c62a1b624d5d5446a3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &8924941041106658507
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3101798197347461516}
- component: {fileID: 318389086690240487}
- component: {fileID: 8402379286112444004}
m_Layer: 0
m_Name: Card_model_blue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3101798197347461516
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8924941041106658507}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0.23144493, z: -0, w: 0.97284806}
m_LocalPosition: {x: 2.29, y: 0.5528, z: -46.74}
m_LocalScale: {x: 3, y: 3, z: 3}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 2850537304662550584}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: -26.764, z: 0}
--- !u!65 &318389086690240487
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8924941041106658507}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.13, y: 0.1, z: 0.16}
m_Center: {x: 0, y: 0, z: 0}
--- !u!95 &8402379286112444004
Animator:
serializedVersion: 7
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8924941041106658507}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: b1d17488fd8ca5d36a535e9f1770c2eb, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0

View File

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

View File

@ -20,7 +20,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 2.612, y: 0, z: -0.12000084}
value: {x: 0.30417728, y: -3.849102, z: -20.569092}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -29,7 +29,7 @@ AnimationClip:
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.41666666
value: {x: 2.612, y: 0, z: -0.12000084}
value: {x: 0.30417728, y: -3.849102, z: -20.569092}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -38,7 +38,7 @@ AnimationClip:
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1.1666666
value: {x: 1.33, y: 0, z: -0.12000084}
value: {x: -1.024, y: -3.849102, z: -20.569092}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -138,123 +138,6 @@ AnimationClip:
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 2.612
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: 2.612
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: 1.33
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -0.12000084
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: -0.12000084
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: -0.12000084
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
@ -294,6 +177,123 @@ AnimationClip:
classID: 64
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.30417728
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: 0.30417728
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: -1.024
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -3.849102
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: -3.849102
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: -3.849102
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -20.569092
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: -20.569092
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.1666666
value: -20.569092
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path:
classID: 4
script: {fileID: 0}
flags: 0
m_EulerEditorCurves: []
m_HasGenericRootTransform: 1
m_HasMotionFloatCurves: 0

View File

@ -0,0 +1,47 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Material.008 Variant
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 2100000, guid: ddb92a2018191bb729b31ab15dd86ef3, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _BaseColor: {r: 0.15294118, g: 0.2, b: 0.61960787, a: 1}
- _Color: {r: 0.15294114, g: 0.19999996, b: 0.61960775, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &339439147917784705
MonoBehaviour:
m_ObjectHideFlags: 11
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d91804066ee9ae8478ced3704746b8e3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,48 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: level5 Variant
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 6091742677541092392, guid: 68cd2a13bfcfb43b68877182a967920a, type: 3}
m_ModifiedSerializedProperties: 2
m_ValidKeywords:
- _EMISSION
m_InvalidKeywords: []
m_LightmapFlags: 2
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors:
- _Color: {r: 0.9063317, g: 0.9063317, b: 0.9063317, a: 1}
- _EmissionColor: {r: 4, g: 4, b: 4, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &2504236729859406079
MonoBehaviour:
m_ObjectHideFlags: 11
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1ab3d0c3e0c6f4390aaea7a9d5380882
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/pngs/3x3n.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 KiB

117
Assets/pngs/3x3n.png.meta Normal file
View File

@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 6ac935e7d78fa92e8a757662a4541e91
TextureImporter:
internalIDToNameTable: []
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: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 520, y: 110, z: 520, w: 100}
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: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -1,10 +1,7 @@
fileFormatVersion: 2
guid: 7f8715f19f59bd7e58dd1b69a741f94f
guid: 9972f130bf5d27a53b2ce7051ac2d5be
TextureImporter:
internalIDToNameTable:
- first:
213: 7482667652216324306
second: Square
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
@ -42,21 +39,21 @@ TextureImporter:
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 256
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: 0
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
@ -68,7 +65,7 @@ TextureImporter:
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 1
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
@ -96,64 +93,12 @@ TextureImporter:
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: Square
rect:
serializedVersion: 2
x: 0
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2d009a6b596c7d760800000000000000
internalID: 7482667652216324306
vertices: []
indices:
edges: []
weights: []
sprites: []
outline: []
customData:
physicsShape:
- - {x: -128, y: 128}
- {x: -128, y: -128}
- {x: 128, y: -128}
- {x: 128, y: 128}
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
@ -164,8 +109,7 @@ TextureImporter:
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Square: 7482667652216324306
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

View File

@ -6,6 +6,7 @@ public enum TabletScreen {
Word,
Mines,
SimonSays,
Untangle,
MainMenu,
Clear
}
@ -34,6 +35,7 @@ public class TabletScript : MonoBehaviour
[SerializeField] private GameObject minesPuzzleSheet = null;
[SerializeField] private GameObject wordPuzzleSheet = null;
[SerializeField] private GameObject simonSaysPuzzleSheet = null;
[SerializeField] private GameObject untanglePuzzleSheet = null;
[SerializeField] private GameObject mainMenuSheet = null;
@ -58,6 +60,7 @@ public class TabletScript : MonoBehaviour
[SerializeField] private ControlScript minesControlScript = null;
[SerializeField] private WordPuzzle wordPuzzleScript = null;
[SerializeField] private SimonSaysGameManager simonSaysGameManager = null;
[SerializeField] private UntangleGameManager untangleGameManager = null;
public void Start()
@ -76,33 +79,46 @@ public class TabletScript : MonoBehaviour
wordPuzzleSheet.SetActive(true);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
break;
case TabletScreen.Mines:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(true);
simonSaysPuzzleSheet.SetActive(false);
break;
case TabletScreen.MainMenu:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
mainMenuSheet.SetActive(true);
untanglePuzzleSheet.SetActive(false);
break;
case TabletScreen.SimonSays:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(true);
untanglePuzzleSheet.SetActive(false);
break;
case TabletScreen.Untangle:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(true);
break;
case TabletScreen.MainMenu:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
mainMenuSheet.SetActive(true);
break;
case TabletScreen.Clear:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
mainMenuSheet.SetActive(false);
break;
default:
wordPuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
mainMenuSheet.SetActive(false);
break;
@ -114,6 +130,7 @@ public class TabletScript : MonoBehaviour
mainMenuSheet.SetActive(false);
wordPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
minesPuzzleSheet.SetActive(true);
minesControlScript.GridSizeX = gridSize;
@ -146,6 +163,7 @@ public class TabletScript : MonoBehaviour
mainMenuSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
StartCoroutine(WaitForPuzzleCompletionWord());
}
@ -171,6 +189,7 @@ public class TabletScript : MonoBehaviour
mainMenuSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
wordPuzzleSheet.SetActive(false);
untanglePuzzleSheet.SetActive(false);
StartCoroutine(WaitForPuzzleCompletionSimonSays());
}
@ -186,6 +205,30 @@ public class TabletScript : MonoBehaviour
SetScreen(TabletScreen.MainMenu);
}
public void SetScreenUntangle(int pointCount)
{
untanglePuzzleSheet.SetActive(true);
untangleGameManager.pointCount = pointCount;
untangleGameManager.StartGame();
mainMenuSheet.SetActive(false);
minesPuzzleSheet.SetActive(false);
wordPuzzleSheet.SetActive(false);
simonSaysPuzzleSheet.SetActive(false);
StartCoroutine(WaitForPuzzleCompletionUntangle());
}
private IEnumerator WaitForPuzzleCompletionUntangle()
{
yield return new WaitUntil(() => untangleGameManager.gameState == UGameState.Win);
yield return new WaitForSeconds(1.0f);
untangleGameManager.gameState = UGameState.Uninitialized; // reset the game state to default state
gameState = PuzzleGameState.Win;
SetScreen(TabletScreen.MainMenu);
}
public void SetGameState(PuzzleGameState state)
{
gameState = state;

View File

@ -23,6 +23,12 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/level2.unity
guid: 56f5b5e79d78ae45ca21a3db75b51391
- enabled: 1
path: Assets/Scenes/level3_A.unity
guid: 0f6599ab9c095e8c5b89236d20a0ff45
- enabled: 1
path: Assets/Scenes/level5.unity
guid: 1e9103ecf3cab7c85ab78b5bf899fecc
m_configObjects:
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
m_UseUCBPForAssetBundles: 0