Ladder for level maze

This commit is contained in:
Lucastaa
2026-05-03 06:49:11 +07:00
parent 5b30f92622
commit eac87bdd03
12 changed files with 822 additions and 5 deletions

Binary file not shown.

View File

@@ -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:

Binary file not shown.

View File

@@ -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:

Binary file not shown.

View File

@@ -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:

Binary file not shown.

View File

@@ -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:

View File

@@ -185,6 +185,71 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::_PlayerDataManager m_EditorClassIdentifier: Assembly-CSharp::_PlayerDataManager
_Players: _Players:
_items: [] _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 --- !u!1 &200732282
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -348,6 +413,71 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3} m_CorrespondingSourceObject: {fileID: 2207112960010484425, guid: fb7874830b9e56341bf88f2a1123c677, type: 3}
m_PrefabInstance: {fileID: 3886963620680427248} m_PrefabInstance: {fileID: 3886963620680427248}
m_PrefabAsset: {fileID: 0} 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 --- !u!1 &1142785471
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -674,6 +804,156 @@ MonoBehaviour:
visualizationInterval: 0.05 visualizationInterval: 0.05
mazeRenderer: {fileID: 1439162688} mazeRenderer: {fileID: 1439162688}
mazeContainer: {fileID: 390662299} 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 --- !u!1 &1997343488
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -803,3 +1083,5 @@ SceneRoots:
m_Roots: m_Roots:
- {fileID: 1997343489} - {fileID: 1997343489}
- {fileID: 1142785474} - {fileID: 1142785474}
- {fileID: 841412614}
- {fileID: 51806460}

View File

@@ -11,6 +11,8 @@ namespace Hallucinate.GameSetup.Maze
Processing, // Currently being evaluated by algorithm (Debug) Processing, // Currently being evaluated by algorithm (Debug)
Path, // Temporary path (e.g., Wilson's crawler) Path, // Temporary path (e.g., Wilson's crawler)
Start, // Entry point Start, // Entry point
End // Exit point End, // Exit point
StairUp,
StairDown
} }
} }

View File

@@ -9,8 +9,9 @@ namespace Hallucinate.GameSetup.Maze
/// </summary> /// </summary>
public class MazeGrid public class MazeGrid
{ {
public int Width { get; } public int Width { get; private set; }
public int Depth { get; } public int Depth { get; private set; }
public int Level { get; set; }
private readonly MazeCellType[,] _cells; private readonly MazeCellType[,] _cells;

View File

@@ -12,7 +12,10 @@ namespace Hallucinate.GameSetup.Maze
{ {
public enum AlgorithmType { Recursive, Wilsons, Prims, Crawler } 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 AlgorithmType selectedAlgorithm;
[SerializeField] private int width = 30; [SerializeField] private int width = 30;
[SerializeField] private int depth = 30; [SerializeField] private int depth = 30;
@@ -26,6 +29,14 @@ namespace Hallucinate.GameSetup.Maze
[SerializeField] private MazeRenderer mazeRenderer; [SerializeField] private MazeRenderer mazeRenderer;
[SerializeField] private Transform mazeContainer; [SerializeField] private Transform mazeContainer;
[Header("Corridor Setting")]
public GameObject straightManHoleLadder;
public GameObject straightManHoleUp;
public GameObject deadendManHoleLadder;
public GameObject deadendManHoleUp;
private MazeGrid _grid; private MazeGrid _grid;
private Coroutine _generationCoroutine; private Coroutine _generationCoroutine;
@@ -45,7 +56,78 @@ namespace Hallucinate.GameSetup.Maze
[ContextMenu("Regenerate")] [ContextMenu("Regenerate")]
public void 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<Vector2Int> possibleConnections = new List<Vector2Int>();
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); StopCoroutine(_generationCoroutine);
} }
@@ -65,6 +147,16 @@ namespace Hallucinate.GameSetup.Maze
algorithm.Generate(_grid); algorithm.Generate(_grid);
} }
} }
private void ShuffleList<T>(List<T> 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) private IMazeAlgorithm GetAlgorithm(AlgorithmType type)
{ {