diff --git a/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx b/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx new file mode 100644 index 00000000..e1a392c7 Binary files /dev/null and b/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx differ diff --git a/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx.meta b/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx.meta new file mode 100644 index 00000000..334a74d1 --- /dev/null +++ b/Assets/Prefabs/Maze/Dungeon/Dead_Manhole_Up.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 1e0fe08755c202644ab57e3ecb75ea61 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx new file mode 100644 index 00000000..eb5c34b5 Binary files /dev/null and b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx differ diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx.meta b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx.meta new file mode 100644 index 00000000..975220c7 --- /dev/null +++ b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Down.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx new file mode 100644 index 00000000..9e8c7356 Binary files /dev/null and b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx differ diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx.meta b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx.meta new file mode 100644 index 00000000..1369819a --- /dev/null +++ b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up 1.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: e4cc6038906227b41bbab3e2f4906158 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx new file mode 100644 index 00000000..eda0da25 Binary files /dev/null and b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx differ diff --git a/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx.meta b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx.meta new file mode 100644 index 00000000..02757225 --- /dev/null +++ b/Assets/Prefabs/Maze/Dungeon/Straight_Manhole_Up.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: ab645dccb94224b4ab1b6722f4f1e1c4 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main Scene.unity b/Assets/Scenes/Main Scene.unity index 49437a56..02fa1ccc 100644 --- a/Assets/Scenes/Main Scene.unity +++ b/Assets/Scenes/Main Scene.unity @@ -185,6 +185,71 @@ MonoBehaviour: m_EditorClassIdentifier: Assembly-CSharp::_PlayerDataManager _Players: _items: [] +--- !u!1001 &51806460 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalPosition.y + value: 12.48 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalPosition.z + value: 9.21 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + propertyPath: m_Name + value: Straight_Manhole_Up 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + insertIndex: -1 + addedObject: {fileID: 1788441690} + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} +--- !u!4 &51806461 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: e4cc6038906227b41bbab3e2f4906158, type: 3} + m_PrefabInstance: {fileID: 51806460} + m_PrefabAsset: {fileID: 0} --- !u!1 &200732282 GameObject: m_ObjectHideFlags: 0 @@ -348,6 +413,71 @@ Transform: m_CorrespondingSourceObject: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3} m_PrefabInstance: {fileID: 3886963620680427248} m_PrefabAsset: {fileID: 0} +--- !u!1001 &841412614 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalPosition.y + value: 11.84 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalRotation.y + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + propertyPath: m_Name + value: Dead_End_Manhole_Down + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + insertIndex: -1 + addedObject: {fileID: 1580015190} + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} +--- !u!4 &841412615 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c7b8e72ff8d936143a810e1baa494428, type: 3} + m_PrefabInstance: {fileID: 841412614} + m_PrefabAsset: {fileID: 0} --- !u!1 &1142785471 GameObject: m_ObjectHideFlags: 0 @@ -674,6 +804,156 @@ MonoBehaviour: visualizationInterval: 0.05 mazeRenderer: {fileID: 1439162688} mazeContainer: {fileID: 390662299} + straightManHoleLadder: {fileID: 1788441691} + straightManHoleUp: {fileID: 919132149155446097, guid: ab645dccb94224b4ab1b6722f4f1e1c4, type: 3} + deadendManHoleLadder: {fileID: 1580015191} + deadendManHoleUp: {fileID: 919132149155446097, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} +--- !u!1001 &1580015189 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 841412615} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalPosition.y + value: -12.12 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalRotation.w + value: 0.70710677 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + propertyPath: m_Name + value: Dead_Manhole_Up + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} +--- !u!4 &1580015190 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + m_PrefabInstance: {fileID: 1580015189} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1580015191 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 1e0fe08755c202644ab57e3ecb75ea61, type: 3} + m_PrefabInstance: {fileID: 1580015189} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1788441689 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 51806461} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalPosition.z + value: 6 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + propertyPath: m_Name + value: Straight_Manhole_Down + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} +--- !u!4 &1788441690 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + m_PrefabInstance: {fileID: 1788441689} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1788441691 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 0bcb8b5c17d1d3c4cab9ff76ce3b36bc, type: 3} + m_PrefabInstance: {fileID: 1788441689} + m_PrefabAsset: {fileID: 0} --- !u!1 &1997343488 GameObject: m_ObjectHideFlags: 0 @@ -803,3 +1083,5 @@ SceneRoots: m_Roots: - {fileID: 1997343489} - {fileID: 1142785474} + - {fileID: 841412614} + - {fileID: 51806460} diff --git a/Assets/Scripts/GameSetup/Maze/MazeCellType.cs b/Assets/Scripts/GameSetup/Maze/MazeCellType.cs index f3ff132a..8c7a7c04 100644 --- a/Assets/Scripts/GameSetup/Maze/MazeCellType.cs +++ b/Assets/Scripts/GameSetup/Maze/MazeCellType.cs @@ -11,6 +11,8 @@ namespace Hallucinate.GameSetup.Maze Processing, // Currently being evaluated by algorithm (Debug) Path, // Temporary path (e.g., Wilson's crawler) Start, // Entry point - End // Exit point + End, // Exit point + StairUp, + StairDown } } diff --git a/Assets/Scripts/GameSetup/Maze/MazeGrid.cs b/Assets/Scripts/GameSetup/Maze/MazeGrid.cs index cb386259..ca991f5b 100644 --- a/Assets/Scripts/GameSetup/Maze/MazeGrid.cs +++ b/Assets/Scripts/GameSetup/Maze/MazeGrid.cs @@ -9,8 +9,9 @@ namespace Hallucinate.GameSetup.Maze /// public class MazeGrid { - public int Width { get; } - public int Depth { get; } + public int Width { get; private set; } + public int Depth { get; private set; } + public int Level { get; set; } private readonly MazeCellType[,] _cells; diff --git a/Assets/Scripts/GameSetup/Maze/MazeManager.cs b/Assets/Scripts/GameSetup/Maze/MazeManager.cs index 6a8c130d..852130f0 100644 --- a/Assets/Scripts/GameSetup/Maze/MazeManager.cs +++ b/Assets/Scripts/GameSetup/Maze/MazeManager.cs @@ -12,7 +12,10 @@ namespace Hallucinate.GameSetup.Maze { public enum AlgorithmType { Recursive, Wilsons, Prims, Crawler } - [Header("System Settings")] + [Header("System Settings")] + public MazeGrid[] mazes; + public float floorHeight = 3.5f; + public int connectionsPerFloor = 2; [SerializeField] private AlgorithmType selectedAlgorithm; [SerializeField] private int width = 30; [SerializeField] private int depth = 30; @@ -26,6 +29,14 @@ namespace Hallucinate.GameSetup.Maze [SerializeField] private MazeRenderer mazeRenderer; [SerializeField] private Transform mazeContainer; + [Header("Corridor Setting")] + public GameObject straightManHoleLadder; + public GameObject straightManHoleUp; + public GameObject deadendManHoleLadder; + public GameObject deadendManHoleUp; + + + private MazeGrid _grid; private Coroutine _generationCoroutine; @@ -45,7 +56,78 @@ namespace Hallucinate.GameSetup.Maze [ContextMenu("Regenerate")] public void Regenerate() { - if (_generationCoroutine != null) + // Bước 1: Khởi tạo tất cả các tầng mê cung + for (int i = 0; i < mazes.Length; i++) + { + mazes[i].width = width; + mazes[i].depth = depth; + mazes[i].level = i; + mazes[i].Build(); // Lưu ý: Hàm Build này của bạn nên được tối ưu để KHÔNG Instantiate Model vội. + } + + // Bước 2: Tạo điểm nối giữa các cặp tầng (0->1, 1->2, 2->3...) + for (int i = 0; i < mazes.Length - 1; i++) + { + MazeGrid currentFloor = mazes[i]; + MazeGrid nextFloor = mazes[i + 1]; + + // 2.1: Quét tìm TẤT CẢ các tọa độ (x, z) có thể làm điểm nối + List possibleConnections = new List(); + + for (int z = 0; z < depth; z++) + { + for (int x = 0; x < width; x++) + { + // Nếu cả Tầng Dưới và Tầng Trên đều đang là đường đi (Path) ở tọa độ này + // (Bạn cần đổi điều kiện này cho khớp với Enum/Class thực tế của bạn) + bool isCurrentFloorPath = + currentFloor.piecePlace[x, z].piece == MazeGrid.PieceType.Vertical_Straight; + bool isNextFloorPath = nextFloor.piecePlace[x, z].piece == MazeGrid.PieceType.Vertical_Straight; + + if (isCurrentFloorPath && isNextFloorPath) + { + possibleConnections.Add(new Vector2Int(x, z)); + } + } + } + + // 2.2: Chọn ngẫu nhiên N điểm từ danh sách để làm thang nối + int connectionsMade = 0; + + // Trộn ngẫu nhiên danh sách (Shuffle) để các điểm nối không bị dồn về 1 góc + ShuffleList(possibleConnections); + + foreach (Vector2Int pos in possibleConnections) + { + if (connectionsMade >= connectionsPerFloor) break; // Đã đủ số lượng đường lên thì dừng + + int x = pos.x; + int z = pos.y; + + // Xóa model đường đi cũ (nếu hàm Build() đã lỡ Instantiate) + if (currentFloor.piecePlace[x, z].model != null) Destroy(currentFloor.piecePlace[x, z].model); + if (nextFloor.piecePlace[x, z].model != null) Destroy(nextFloor.piecePlace[x, z].model); + + // TÍNH TOẠ ĐỘ Y CHUẨN XÁC: Y = Tầng * Độ_Cao_Tầng + Vector3 upManHolePos = new Vector3(x * currentFloor.scale, currentFloor.level * floorHeight, + z * currentFloor.scale); + Vector3 ladderManPos = new Vector3(x * nextFloor.scale, nextFloor.level * floorHeight, + z * nextFloor.scale); + + // Sinh Model mới tại điểm đã chốt + currentFloor.piecePlace[x, z].model = + Instantiate(straightManHoleUp, upManHolePos, Quaternion.identity); + nextFloor.piecePlace[x, z].model = + Instantiate(straightManHoleLadder, ladderManPos, Quaternion.identity); + + // Cập nhật loại dữ liệu để hệ thống ghi nhận đây là ô cầu thang + // currentFloor.piecePlace[x, z].piece = Maze.PieceType.StairsUp; (Nếu bạn có enum này) + + connectionsMade++; + } + } + + if (_generationCoroutine != null) { StopCoroutine(_generationCoroutine); } @@ -65,6 +147,16 @@ namespace Hallucinate.GameSetup.Maze algorithm.Generate(_grid); } } + private void ShuffleList(List list) + { + for (int i = 0; i < list.Count; i++) + { + T temp = list[i]; + int randomIndex = Random.Range(i, list.Count); + list[i] = list[randomIndex]; + list[randomIndex] = temp; + } + } private IMazeAlgorithm GetAlgorithm(AlgorithmType type) {