diff --git a/Client/Assets/Scenes/Game.unity b/Client/Assets/Scenes/Game.unity index afcf360..c34b5d6 100644 --- a/Client/Assets/Scenes/Game.unity +++ b/Client/Assets/Scenes/Game.unity @@ -119,6 +119,129 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &71139917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 71139920} + - component: {fileID: 71139918} + - component: {fileID: 71139919} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &71139918 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &71139919 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &71139920 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 71139917} + 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: 2110038582} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &111982856 GameObject: m_ObjectHideFlags: 0 @@ -334,6 +457,129 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &383599493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 383599496} + - component: {fileID: 383599494} + - component: {fileID: 383599495} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &383599494 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383599493} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &383599495 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383599493} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &383599496 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383599493} + 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: 798611030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!224 &689345800 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 2322698135530781468, guid: afbed11ea0c7e944aa36a71951b00ad6, type: 3} @@ -369,7 +615,6 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: isGlobal: 1 - focusedEntity: {fileID: 0} --- !u!4 &719498457 Transform: m_ObjectHideFlags: 0 @@ -394,8 +639,9 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 741561707} + - component: {fileID: 741561708} m_Layer: 0 - m_Name: map + m_Name: OutsideMap m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -415,9 +661,26 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1084213391} + - {fileID: 1980392310} + - {fileID: 2110038582} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &799638468 +--- !u!114 &741561708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 741561706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81339b242c794b8d9d28d7111a46bfbf, type: 3} + m_Name: + m_EditorClassIdentifier: + baseLevel: {fileID: 1084213392} + buildLevel: {fileID: 1204950904} + plantLevel: {fileID: 71139918} +--- !u!1 &798611029 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -425,46 +688,43 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 799638469} - - component: {fileID: 799638470} + - component: {fileID: 798611030} + - component: {fileID: 798611031} m_Layer: 0 - m_Name: MapGenerator + m_Name: BuildingMap m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &799638469 +--- !u!4 &798611030 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 799638468} + m_GameObject: {fileID: 798611029} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} + m_Children: + - {fileID: 383599496} + m_Father: {fileID: 1257136739} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &799638470 -MonoBehaviour: +--- !u!156049354 &798611031 +Grid: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 799638468} + m_GameObject: {fileID: 798611029} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 81339b242c794b8d9d28d7111a46bfbf, type: 3} - m_Name: - m_EditorClassIdentifier: - isGlobal: 1 - baseLevel: {fileID: 1084213392} - buildLevel: {fileID: 0} - plantLevel: {fileID: 0} + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 --- !u!1 &828003921 GameObject: m_ObjectHideFlags: 0 @@ -627,6 +887,53 @@ TilemapCollider2D: m_MaximumTileChangeCount: 1000 m_ExtrusionFactor: 0 m_UseDelaunayMesh: 0 +--- !u!1 &832859256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832859258} + - component: {fileID: 832859257} + m_Layer: 0 + m_Name: baseGround + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &832859257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832859256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e7ec2149bca47f42965dd01c01116cd, type: 3} + m_Name: + m_EditorClassIdentifier: + textureLevel: {fileID: 1796154648} + dataOffset: {x: 0, y: 0} +--- !u!4 &832859258 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832859256} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1301925670} + m_Father: {fileID: 1257136739} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!224 &981108095 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 3161252966921572831, guid: 6846a4c7db6ab7e49812b377bdf8df7d, type: 3} @@ -679,6 +986,129 @@ MonoBehaviour: m_EditorClassIdentifier: textureLevel: {fileID: 828003924} dataOffset: {x: 0, y: 0} +--- !u!1 &1204950903 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1204950906} + - component: {fileID: 1204950904} + - component: {fileID: 1204950905} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &1204950904 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &1204950905 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &1204950906 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1204950903} + 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: 1980392310} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1236970682 GameObject: m_ObjectHideFlags: 0 @@ -799,7 +1229,7 @@ GameObject: - component: {fileID: 1239746125} - component: {fileID: 1239746124} m_Layer: 0 - m_Name: Camera + m_Name: MainCamera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -923,6 +1353,224 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1257136737 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1257136739} + - component: {fileID: 1257136738} + m_Layer: 0 + m_Name: InternalMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1257136738 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257136737} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81339b242c794b8d9d28d7111a46bfbf, type: 3} + m_Name: + m_EditorClassIdentifier: + baseLevel: {fileID: 832859257} + buildLevel: {fileID: 383599494} + plantLevel: {fileID: 1353882630} +--- !u!4 &1257136739 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257136737} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 1, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 832859258} + - {fileID: 798611030} + - {fileID: 1695053573} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} +--- !u!1 &1301925669 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1301925670} + - component: {fileID: 1301925671} + m_Layer: 0 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1301925670 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301925669} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1796154651} + m_Father: {fileID: 832859258} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1301925671 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1301925669} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!1 &1353882629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1353882632} + - component: {fileID: 1353882630} + - component: {fileID: 1353882631} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &1353882630 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1353882629} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &1353882631 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1353882629} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &1353882632 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1353882629} + 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: 1695053573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!224 &1401161120 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 1633840166558733415, guid: 97884168f61531647ba02870b2e2160f, type: 3} @@ -989,11 +1637,263 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 22c2554b0c0949aab37618f3a80ffe5a, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1695053572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1695053573} + - component: {fileID: 1695053574} + m_Layer: 0 + m_Name: PlantMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1695053573 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1695053572} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1353882632} + m_Father: {fileID: 1257136739} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1695053574 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1695053572} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!1 &1796154647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1796154651} + - component: {fileID: 1796154648} + - component: {fileID: 1796154650} + - component: {fileID: 1796154649} + m_Layer: 0 + m_Name: Tilemap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1839735485 &1796154648 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796154647} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!19719996 &1796154649 +TilemapCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796154647} + 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_MaximumTileChangeCount: 1000 + m_ExtrusionFactor: 0 + m_UseDelaunayMesh: 0 +--- !u!483693784 &1796154650 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796154647} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!4 &1796154651 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796154647} + 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: 1301925670} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!224 &1892335252 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 4227482396833377269, guid: 72cde32427f7d914692a7b0d22fb791d, type: 3} m_PrefabInstance: {fileID: 481559811017721991} m_PrefabAsset: {fileID: 0} +--- !u!1 &1980392309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1980392310} + - component: {fileID: 1980392311} + m_Layer: 0 + m_Name: BuildingMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1980392310 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980392309} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1204950906} + m_Father: {fileID: 741561707} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1980392311 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1980392309} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 --- !u!1001 &2031076800 PrefabInstance: m_ObjectHideFlags: 0 @@ -1436,6 +2336,51 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 6806539210387795853, guid: 620f2670398686943a232c5a71a6f1d5, type: 3} m_PrefabInstance: {fileID: 6268679642209076924} m_PrefabAsset: {fileID: 0} +--- !u!1 &2110038581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2110038582} + - component: {fileID: 2110038583} + m_Layer: 0 + m_Name: PlantMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2110038582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110038581} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 71139920} + m_Father: {fileID: 741561707} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &2110038583 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2110038581} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 --- !u!1001 &481559811017721991 PrefabInstance: m_ObjectHideFlags: 0 @@ -2169,7 +3114,7 @@ SceneRoots: - {fileID: 1236970686} - {fileID: 323725409} - {fileID: 741561707} + - {fileID: 1257136739} - {fileID: 111982858} - - {fileID: 799638469} - {fileID: 164739122} - {fileID: 719498457} diff --git a/Client/Assets/Scripts/CameraControl/CameraControl.cs b/Client/Assets/Scripts/CameraControl/CameraControl.cs index 4219020..f4742a8 100644 --- a/Client/Assets/Scripts/CameraControl/CameraControl.cs +++ b/Client/Assets/Scripts/CameraControl/CameraControl.cs @@ -6,9 +6,6 @@ namespace CameraControl { public class CameraControl : Utils.MonoSingleton, ITick, ITickUI { - // 当前被聚焦的目标实体 - public Entity.Entity focusedEntity = null; - // Camera movement variables private Vector3 _dragOrigin; private bool _isDragging = false; @@ -50,12 +47,12 @@ namespace CameraControl } public void Tick() { - if (focusedEntity) + if (Program.Instance.focusedEntity) { // Follow the focused entity's position var targetPosition = new Vector3( - focusedEntity.Position.x, - focusedEntity.Position.y, + Program.Instance.focusedEntity.Position.x, + Program.Instance.focusedEntity.Position.y, _camera.transform.position.z); _camera.transform.position = Vector3.Lerp( @@ -86,7 +83,8 @@ namespace CameraControl { _dragOrigin = _camera.ScreenToWorldPoint(Input.mousePosition); _isDragging = true; - focusedEntity = null; // Clear focus when manually moving camera + Program.Instance.focusedEntity.PlayerControlled = false; + Program.Instance.focusedEntity = null; // Clear focus when manually moving camera } // During drag diff --git a/Client/Assets/Scripts/Configs/ConfigProcessor.cs b/Client/Assets/Scripts/Configs/ConfigProcessor.cs index d4bc34e..3825e27 100644 --- a/Client/Assets/Scripts/Configs/ConfigProcessor.cs +++ b/Client/Assets/Scripts/Configs/ConfigProcessor.cs @@ -271,17 +271,17 @@ namespace Configs public static Dictionary LoadResources(string path) where T : UnityEngine.Object { // 创建一个字典来存储资源名称和加载好的资源 - Dictionary resourceDict = new Dictionary(); + var resourceDict = new Dictionary(); // 加载指定路径下的所有资源 - T[] resources = Resources.LoadAll(path); + var resources = Resources.LoadAll(path); - foreach (T resource in resources) + foreach (var resource in resources) { if (resource != null) { // 获取资源名称并存入字典 - string resourceName = resource.name; + var resourceName = resource.name; resourceDict[resourceName] = resource; } } @@ -314,7 +314,7 @@ namespace Configs try { // 使用 using 自动管理 FileStream 的生命周期 - using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) + using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { fs.Seek(0, SeekOrigin.Begin); // 将游标移动到文件开头(可选) bytes = new byte[fs.Length]; // 创建一个字节数组来存储文件内容 @@ -328,10 +328,14 @@ namespace Configs } // 创建一个默认大小的 Texture2D 对象 - Texture2D texture = new Texture2D(2, 2); // 初始大小为 2x2,LoadImage 会自动调整大小 + var texture = new Texture2D(2, 2, TextureFormat.RGBA32, false); // 初始大小为 2x2,LoadImage 会自动调整大小 if (texture.LoadImage(bytes)) // 加载图片数据 { + // 设置过滤模式为 Point (无插值) + texture.filterMode = FilterMode.Point; + texture.wrapMode = TextureWrapMode.Clamp; // 防止边缘出现意外拉伸 + return texture; // 返回加载成功的 Texture2D 对象 } else diff --git a/Client/Assets/Scripts/Data/DrawingOrderDef.cs b/Client/Assets/Scripts/Data/DrawingOrderDef.cs index daafb2f..ad88447 100644 --- a/Client/Assets/Scripts/Data/DrawingOrderDef.cs +++ b/Client/Assets/Scripts/Data/DrawingOrderDef.cs @@ -227,7 +227,7 @@ namespace Data public class DrawNodeDef : Define { - public List animationTextures = new(); + public List textures = new(); public List nodes = new(); public string nodeName; public Vector2 position = new(0, 0); diff --git a/Client/Assets/Scripts/Entity/Bullet.cs b/Client/Assets/Scripts/Entity/Bullet.cs index 26a1c3e..589b0eb 100644 --- a/Client/Assets/Scripts/Entity/Bullet.cs +++ b/Client/Assets/Scripts/Entity/Bullet.cs @@ -54,10 +54,8 @@ namespace Entity return; // 计算当前向上方向与目标方向之间的角度 - float angle = Mathf.Atan2(targetDirection.y, targetDirection.x) * Mathf.Rad2Deg; - - // 调整角度,因为默认贴图向上是0度,而Atan2计算的是相对于x轴的角度 - angle -= 90f; + var angle = Mathf.Atan2(targetDirection.y, targetDirection.x) * Mathf.Rad2Deg; + // 应用旋转 transform.rotation = Quaternion.Euler(0f, 0f, angle); diff --git a/Client/Assets/Scripts/Entity/Entity.cs b/Client/Assets/Scripts/Entity/Entity.cs index 8efa864..45eb622 100644 --- a/Client/Assets/Scripts/Entity/Entity.cs +++ b/Client/Assets/Scripts/Entity/Entity.cs @@ -84,12 +84,20 @@ namespace Entity { IsChase = true; currentJob = null; + if(Program.Instance.focusedEntity) + Program.Instance.focusedEntity.PlayerControlled = false; + Program.Instance.focusedEntity = this; + } + else if (PlayerControlled) + { + Program.Instance.focusedEntity = null; } - _isPlayerControlled = value; } - get => _isPlayerControlled; + get => Program.Instance.focusedEntity == this; } + public bool IsWalking => _walkingTimer > 0; + /// /// 获取实体当前位置。 /// @@ -99,18 +107,16 @@ namespace Entity /// 表示实体是否已经死亡(生命值小于等于零)。 /// public bool IsDead => attributes.health <= 0; - public bool IsShowingHealthBarUI=>hitBarUIShowTimer > 0; - public bool IsAttacking => attackCoroutine != null; + public bool IsShowingHealthBarUI=>_hitBarUIShowTimer > 0; + public bool IsAttacking => _attackCoroutine != null; - - private bool _isPlayerControlled = false; private bool _warning = false; /// /// 存储不同朝向下的动画节点集合。 /// public Dictionary>> bodyAnimationNode = new(); - private List currentAnimatorCache=new (); + private List _currentAnimatorCache=new (); /// /// 存储不同朝向下的身体节点对象。 /// @@ -119,30 +125,31 @@ namespace Entity /// /// 当前实体的朝向。 /// - private Orientation currentOrientation = Orientation.Down; + private Orientation _currentOrientation = Orientation.Down; /// /// 当前实体的状态 /// - private EntityState currentState = EntityState.Idle; + private EntityState _currentState = EntityState.Idle; /// /// 攻击动画的持续时间(秒)。 /// - private const float attackAnimationDuration = 0.1f; + private const float AttackAnimationDuration = 0.1f; /// /// 抖动的偏移量。 /// - private const float shakeOffset = 0.5f; + private const float ShakeOffset = 0.5f; // 协程引用 - private Coroutine attackCoroutine; + private Coroutine _attackCoroutine; protected EntityDef entityDef; - public float hitBarUIShowTime = 5; - private float hitBarUIShowTimer = 0; + [SerializeField] private float _hitBarUIShowTime = 5; + private float _hitBarUIShowTimer = 0; + private int _walkingTimer = 1; /// @@ -258,7 +265,7 @@ namespace Entity GameObject nodeObject = null; // 根据纹理数量创建不同类型的节点 - switch (drawNode.animationTextures?.Count ?? 0) + switch (drawNode.textures?.Count ?? 0) { case 0: // 无纹理节点 @@ -277,12 +284,12 @@ namespace Entity nodeObject = Instantiate(imagePrefab.gameObject, parent.transform); var texture = Managers.PackagesImageManager.Instance?.GetSprite(drawNode.packID, - drawNode.animationTextures[0]); + drawNode.textures[0]); if (!texture) { Debug.LogWarning( - $"InitBodyPart: 无法获取纹理 (节点名: {drawNode.nodeName}, 纹理ID: {drawNode.animationTextures[0]})"); + $"InitBodyPart: 无法获取纹理 (节点名: {drawNode.nodeName}, 纹理ID: {drawNode.textures[0]})"); } var imagePrefabCom = nodeObject.GetComponent(); @@ -316,7 +323,7 @@ namespace Entity animator.SetFPS(drawNode.FPS); var animatedSprites = new List(); - foreach (var textureId in drawNode.animationTextures) + foreach (var textureId in drawNode.textures) { try { @@ -386,7 +393,15 @@ namespace Entity /// public void Tick() { - if (_isPlayerControlled) + if (_walkingTimer > 0) + { + _walkingTimer -= 1; + if (_walkingTimer <= 0) + { + SetBodyTexture(EntityState.Idle, _currentOrientation); + } + } + if (PlayerControlled) { UpdatePlayerControls(); } @@ -395,9 +410,9 @@ namespace Entity AutoBehave(); } - if (currentAnimatorCache!=null) + if (_currentAnimatorCache!=null) { - foreach (var animator in currentAnimatorCache) + foreach (var animator in _currentAnimatorCache) { animator.Tick(); } @@ -406,8 +421,8 @@ namespace Entity if (IsShowingHealthBarUI) { - hitBarUIShowTimer -= Time.deltaTime; - if (hitBarUIShowTimer <= 0) + _hitBarUIShowTimer -= Time.deltaTime; + if (_hitBarUIShowTimer <= 0) { HideHealthBar(); } @@ -420,14 +435,14 @@ namespace Entity public virtual void TryAttack() { if(!IsAttacking) - attackCoroutine = StartCoroutine(AttackFlow()); + _attackCoroutine = StartCoroutine(AttackFlow()); } public virtual void SetBodyTexture(EntityState state, Orientation orientation) { - if (bodyNodes.TryGetValue(currentState, out var stateNode)) + if (bodyNodes.TryGetValue(_currentState, out var stateNode)) { - if (stateNode.TryGetValue(currentOrientation, out var node)) + if (stateNode.TryGetValue(_currentOrientation, out var node)) { node.SetActive(false); } @@ -441,14 +456,14 @@ namespace Entity } } - currentState = state; - currentOrientation = orientation; + _currentState = state; + _currentOrientation = orientation; - if (bodyAnimationNode.TryGetValue(currentState, out var animationNode)) + if (bodyAnimationNode.TryGetValue(_currentState, out var animationNode)) { - if (animationNode.TryGetValue(currentOrientation, out var value)) + if (animationNode.TryGetValue(_currentOrientation, out var value)) { - currentAnimatorCache=value; + _currentAnimatorCache=value; } } } @@ -461,6 +476,8 @@ namespace Entity if (IsAttacking) return; transform.position += direction * (attributes.moveSpeed * Time.deltaTime * (IsChase ? 1 : 0.5f)); + SetBodyTexture(EntityState.Walking,_currentOrientation); + _walkingTimer = 2; } /// @@ -483,7 +500,7 @@ namespace Entity return; healthBarPrefab.gameObject.SetActive(true); healthBarPrefab.Progress = (float)attributes.health / entityDef.attributes.health; - hitBarUIShowTimer=hitBarUIShowTime; + _hitBarUIShowTimer=_hitBarUIShowTime; } public void HideHealthBar() @@ -521,7 +538,7 @@ namespace Entity ori = direction.x > 0 ? Orientation.Right : Orientation.Left; } - SetBodyTexture(currentState, ori); + SetBodyTexture(_currentState, ori); } /// @@ -608,7 +625,7 @@ namespace Entity // 调用检测并攻击敌人的方法 DetectAndAttackEnemies(); // 攻击流程结束,清理协程引用 - attackCoroutine = null; + _attackCoroutine = null; } @@ -623,14 +640,14 @@ namespace Entity StartCoroutine(ShakeInDirectionCoroutine()); // 返回检测敌人的起始时间 - return attackAnimationDuration; + return AttackAnimationDuration; } private IEnumerator ShakeInDirectionCoroutine() { var originalPosition = transform.position; // 记录原始位置 - transform.position += direction * shakeOffset; - yield return new WaitForSeconds(attackAnimationDuration); + transform.position += direction * ShakeOffset; + yield return new WaitForSeconds(AttackAnimationDuration); transform.position = originalPosition; } diff --git a/Client/Assets/Scripts/Entity/Outline.cs b/Client/Assets/Scripts/Entity/Outline.cs index 354512b..97dd81b 100644 --- a/Client/Assets/Scripts/Entity/Outline.cs +++ b/Client/Assets/Scripts/Entity/Outline.cs @@ -110,14 +110,6 @@ namespace Entity result.Add(("结束操控", EndControl)); else result.Add(("手动操控", StartControl)); - if (CameraControl.CameraControl.Instance.focusedEntity == entity) - { - result.Add(("取消跟随", ()=>CameraControl.CameraControl.Instance.focusedEntity=null)); - } - else - { - result.Add(("视角跟随", ()=>CameraControl.CameraControl.Instance.focusedEntity=entity)); - } result.Add(("杀死", () => entity.Kill())); result.Add(("变成笨蛋", BecomeDefault)); return result; @@ -132,13 +124,11 @@ namespace Entity private void StartControl() { entity.PlayerControlled = true; - CameraControl.CameraControl.Instance.focusedEntity=entity; } private void EndControl() { entity.PlayerControlled = false; - CameraControl.CameraControl.Instance.focusedEntity=null; } } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Managers/PackagesImageManager.cs b/Client/Assets/Scripts/Managers/PackagesImageManager.cs index 4496a47..c377f8c 100644 --- a/Client/Assets/Scripts/Managers/PackagesImageManager.cs +++ b/Client/Assets/Scripts/Managers/PackagesImageManager.cs @@ -296,15 +296,19 @@ namespace Managers var textureWidth = texture.width; var textureHeight = texture.height; - // 如果不分割(rows和cols都为1),直接创建单个Sprite + // 首先创建一个未分割的精灵,使用原始名称 + if (!sprites.ContainsKey(packId)) + sprites[packId] = new Dictionary(); + + // 创建未分割的精灵 + var fullSpriteRect = new Rect(0, 0, textureWidth, textureHeight); + var fullSprite = Sprite.Create(texture, fullSpriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); + fullSprite.name = baseName; // 使用原始名称 + sprites[packId][baseName] = fullSprite; + + // 如果不分割(rows和cols都为1),直接返回 if (rows == 1 && cols == 1) { - if (!sprites.ContainsKey(packId)) - sprites[packId] = new Dictionary(); - - var spriteRect = new Rect(0, 0, textureWidth, textureHeight); - var sprite = Sprite.Create(texture, spriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); - sprites[packId][baseName] = sprite; return; } @@ -316,25 +320,25 @@ namespace Managers Debug.LogError("Texture dimensions are not divisible by the specified rows and columns."); return; } - - if (!sprites.ContainsKey(packId)) - sprites[packId] = new Dictionary(); + // 分割纹理并创建多个精灵 for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) { Rect spriteRect = new(col * tileWidth, row * tileHeight, tileWidth, tileHeight); var sprite = Sprite.Create(texture, spriteRect, new Vector2(0.5f, 0.5f), pixelsPerUnit); - - var index = (rows - row - 1) * cols + col; + + var index = (rows - row - 1) * cols + col; // 计算索引 var spriteName = $"{baseName}_{index}"; sprite.name = spriteName; + + // 添加到字典中 sprites[packId][spriteName] = sprite; } } } - + public void Reload() { packagesImages.Clear(); diff --git a/Client/Assets/Scripts/Map/MapGenerator.cs b/Client/Assets/Scripts/Map/MapGenerator.cs index 9314fce..bd368e2 100644 --- a/Client/Assets/Scripts/Map/MapGenerator.cs +++ b/Client/Assets/Scripts/Map/MapGenerator.cs @@ -4,7 +4,7 @@ using UnityEngine.Tilemaps; namespace Map { - public class MapGenerator:Utils.MonoSingleton + public class MapGenerator:MonoBehaviour { public DoubleMap baseLevel; public Tilemap buildLevel; @@ -24,10 +24,6 @@ namespace Map { return 0; } - - protected override void OnStart() - { - - } + } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Program.cs b/Client/Assets/Scripts/Program.cs index 1f84dcb..abb5b39 100644 --- a/Client/Assets/Scripts/Program.cs +++ b/Client/Assets/Scripts/Program.cs @@ -3,5 +3,7 @@ using UnityEngine; public class Program : Utils.Singleton { + public Entity.Entity focusedEntity = null; public bool needLoad = true; + } \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/Pathfinder.cs b/Client/Assets/Scripts/Utils/Pathfinder.cs deleted file mode 100644 index 6bd4cc3..0000000 --- a/Client/Assets/Scripts/Utils/Pathfinder.cs +++ /dev/null @@ -1,183 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace Utils -{ - - public static class Pathfinder - { - public static List FindPath(Entity.Entity entity, Vector2 target, float maxDistance) - { - Vector2 start = entity.Position; - - // 计算起点和终点所在的瓦片坐标 - var startTile = GetTileCoord(start); - var endTile = GetTileCoord(target); - - // 如果超出最大距离,直接返回直线路径或空路径 - if (Vector2.Distance(start, target) > maxDistance) - { - return new List { start, target }; - } - - // A*算法数据结构 - var cameFrom = new Dictionary(); - var gScore = new Dictionary(); - var fScore = new Dictionary(); - var openSet = new List(); - - // 初始化 - gScore[startTile] = 0; - fScore[startTile] = Heuristic(startTile, endTile); - openSet.Add(startTile); - - var closestNode = startTile; - var closestDist = Vector2.Distance(start, target); - - while (openSet.Count > 0) - { - // 获取fScore最小的节点 - var current = openSet[0]; - foreach (var node in openSet) - { - if (fScore.GetValueOrDefault(node, float.MaxValue) < - fScore.GetValueOrDefault(current, float.MaxValue)) - { - current = node; - } - } - - // 检查是否到达目标 - if (current == endTile) - { - return ReconstructPath(cameFrom, current, start, target); - } - - openSet.Remove(current); - - // 检查最大距离限制 - var currentDist = Vector2.Distance( - new Vector2(current.x, current.y), - target); - - if (currentDist < closestDist) - { - closestDist = currentDist; - closestNode = current; - } - - if (gScore[current] > maxDistance) - { - return ReconstructPath(cameFrom, closestNode, start, target); - } - - // 遍历邻居(8方向) - for (var dx = -1; dx <= 1; dx++) - { - for (var dy = -1; dy <= 1; dy++) - { - if (dx == 0 && dy == 0) continue; - - var neighbor = new Vector2Int(current.x + dx, current.y + dy); - - // 跳过不可通行区域 - if (!Map.MapGenerator.Instance.CanPassThrough(neighbor.x, neighbor.y)) - { - continue; - } - - // 计算移动成本 - var moveCost = GetMovementCost(current, neighbor); - var tentativeGScore = gScore[current] + moveCost; - - // 跳过超出最大距离的路径 - if (tentativeGScore > maxDistance) - { - continue; - } - - // 发现新节点或找到更好路径 - if (tentativeGScore < gScore.GetValueOrDefault(neighbor, float.MaxValue)) - { - cameFrom[neighbor] = current; - gScore[neighbor] = tentativeGScore; - fScore[neighbor] = tentativeGScore + Heuristic(neighbor, endTile); - - if (!openSet.Contains(neighbor)) - { - openSet.Add(neighbor); - } - } - } - } - } - - // 无法找到完整路径时返回局部最优解 - return ReconstructPath(cameFrom, closestNode, start, target); - } - - // 获取瓦片坐标(每个瓦片覆盖±0.5范围) - private static Vector2Int GetTileCoord(Vector2 position) - { - return new Vector2Int( - Mathf.RoundToInt(position.x), - Mathf.RoundToInt(position.y) - ); - } - - // 计算启发式估值(欧几里得距离) - private static float Heuristic(Vector2Int a, Vector2Int b) - { - return Vector2.Distance( - new Vector2(a.x, a.y), - new Vector2(b.x, b.y) - ); - } - - // 获取移动成本 - private static float GetMovementCost(Vector2Int from, Vector2Int to) - { - // 计算基础距离(正交=1,对角=√2) - var distance = (from.x == to.x || from.y == to.y) ? 1f : 1.4142f; - - // 应用目标瓦片的速度削减率 - var costModifier = Map.MapGenerator.Instance.GetTilePassCost(to.x, to.y); - - // 成本 = 距离 × (1 + 速度削减率) - return distance * (1 + costModifier); - } - - // 重建路径 - private static List ReconstructPath( - Dictionary cameFrom, - Vector2Int current, - Vector2 start, - Vector2 end) - { - // 构建瓦片路径 - var tilePath = new List(); - tilePath.Add(current); - - while (cameFrom.ContainsKey(current)) - { - current = cameFrom[current]; - tilePath.Add(current); - } - - tilePath.Reverse(); - - // 转换为实际坐标路径 - var path = new List(); - path.Add(start); // 添加精确起点 - - // 添加路径点(瓦片中心) - foreach (var tile in tilePath) - { - path.Add(new Vector2(tile.x, tile.y)); - } - - path.Add(end); // 添加精确终点 - return path; - } - } -} \ No newline at end of file diff --git a/Client/Assets/Scripts/Utils/Pathfinder.cs.meta b/Client/Assets/Scripts/Utils/Pathfinder.cs.meta deleted file mode 100644 index 2613e9f..0000000 --- a/Client/Assets/Scripts/Utils/Pathfinder.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 586ed74166c04dae862f096bdc52f63b -timeCreated: 1754750432 \ No newline at end of file diff --git a/Client/Data/Core/Define/Item/Weapon.xml b/Client/Data/Core/Define/Item/Weapon.xml index f373d69..3fae370 100644 --- a/Client/Data/Core/Define/Item/Weapon.xml +++ b/Client/Data/Core/Define/Item/Weapon.xml @@ -1,5 +1,20 @@ + + + TestGunItem + Resources\Item\TestGun.png + + + + TestGun + Resources\Item\TestGunUse.png + + + yellowBullet + Resources\Item\YellowBullet_down.png + + TestGun 10 @@ -26,26 +41,23 @@ 20 - Resources\Item - 20 - - - + + +
  • yellowBullet
  • +
    +
    + + +
  • yellowBullet
  • +
    +
    - - TestGunItem - Resources\Item\TestGun.png - - - TestGun - Resources\Item\TestGunUse.png - diff --git a/Client/Data/Core/Define/Pawn/Character.xml b/Client/Data/Core/Define/Pawn/Character.xml index c5638dc..35710a9 100644 --- a/Client/Data/Core/Define/Pawn/Character.xml +++ b/Client/Data/Core/Define/Pawn/Character.xml @@ -2,11 +2,17 @@ - testPawn + testPawnAnimation res:Character/Test/Body/idle_down 5 1 + + testPawn + Resources\Character\test.png + 4 + 4 + @@ -19,15 +25,93 @@ player - - + + +
  • testPawn_0
  • -
  • testPawn_1
  • -
  • testPawn_2
  • -
  • testPawn_3
  • +
    +
    + +
  • testPawn_4
  • -
    +
    + + +
  • testPawn_8
  • +
    +
    + + +
  • testPawn_12
  • +
    +
    + + + + +
  • testPawn_1
  • +
    +
    + + +
  • testPawn_5
  • +
    +
    + + +
  • testPawn_9
  • +
    +
    + + +
  • testPawn_13
  • +
    +
    + + + + +
  • testPawn_2
  • +
    +
    + + +
  • testPawn_6
  • +
    +
    + + +
  • testPawn_10
  • +
    +
    + + +
  • testPawn_14
  • +
    +
    + + + + +
  • testPawn_3
  • +
    +
    + + +
  • testPawn_7
  • +
    +
    + + +
  • testPawn_11
  • +
    +
    + + +
  • testPawn_15
  • +
    +
    @@ -44,10 +128,18 @@ player - res:Character\Test - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    @@ -64,11 +156,18 @@ player - res:Character\HighSpeed - 200 - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    @@ -85,11 +184,18 @@ player - res:Character\HighSpeed - 200 - - - + + +
  • testPawnAnimation_0
  • +
  • testPawnAnimation_1
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_4
  • +
  • testPawnAnimation_3
  • +
  • testPawnAnimation_2
  • +
  • testPawnAnimation_1
  • +
    +
    diff --git a/Client/Data/Core/Resources/Character/test.png b/Client/Data/Core/Resources/Character/test.png new file mode 100644 index 0000000..4c58e21 Binary files /dev/null and b/Client/Data/Core/Resources/Character/test.png differ