From ef2b90b8b7d6bf77722ac33e1cfad0aa9150498b Mon Sep 17 00:00:00 2001 From: Dev Ghost Date: Tue, 1 Aug 2023 15:48:00 +0000 Subject: [PATCH] added character spawner script, spawn and destroy characters --- Assets/Prefabs/Goblin.prefab | 202 ++++++++ Assets/Prefabs/Goblin.prefab.meta | 7 + Assets/Scenes/Test.unity | 622 +----------------------- Assets/Scripts/Character.cs | 22 +- Assets/Scripts/CharacterSpawner.cs | 58 +++ Assets/Scripts/CharacterSpawner.cs.meta | 11 + Assets/Scripts/EnemyAI.cs | 25 - Assets/Scripts/Player.cs | 5 +- ProjectSettings/Physics2DSettings.asset | 14 +- 9 files changed, 306 insertions(+), 660 deletions(-) create mode 100644 Assets/Prefabs/Goblin.prefab create mode 100644 Assets/Prefabs/Goblin.prefab.meta create mode 100644 Assets/Scripts/CharacterSpawner.cs create mode 100644 Assets/Scripts/CharacterSpawner.cs.meta diff --git a/Assets/Prefabs/Goblin.prefab b/Assets/Prefabs/Goblin.prefab new file mode 100644 index 0000000..99a487c --- /dev/null +++ b/Assets/Prefabs/Goblin.prefab @@ -0,0 +1,202 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3323642218630463498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2571510047151584475} + - component: {fileID: 8844335237740296667} + - component: {fileID: 6322464668695553795} + - component: {fileID: 6844958350935743537} + m_Layer: 7 + m_Name: Goblin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2571510047151584475 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3323642218630463498} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.3400002, y: 2.746, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8678754153801481761} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8844335237740296667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3323642218630463498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 852eca26194d18e4fac550283d37f0a1, type: 3} + m_Name: + m_EditorClassIdentifier: + _animator: {fileID: 0} + _movementSpeed: 1.2 + _bonesSide: {fileID: 0} + _bonesBack: {fileID: 0} + _mapLayer: + serializedVersion: 2 + m_Bits: 8 +--- !u!50 &6322464668695553795 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3323642218630463498} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 0.0001 + m_LinearDrag: 0 + m_AngularDrag: 1 + m_GravityScale: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!70 &6844958350935743537 +CapsuleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3323642218630463498} + m_Enabled: 1 + 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_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_Size: {x: 0.5, y: 0.89} + m_Direction: 0 +--- !u!1 &8864307091831411578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8678754153801481761} + - component: {fileID: 8858417392468279960} + m_Layer: 7 + m_Name: Visual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8678754153801481761 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8864307091831411578} + 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: 2571510047151584475} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8858417392468279960 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8864307091831411578} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 769195415 + m_SortingLayer: 3 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 75e389298ad4a4346ba49430514b0629, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 diff --git a/Assets/Prefabs/Goblin.prefab.meta b/Assets/Prefabs/Goblin.prefab.meta new file mode 100644 index 0000000..1f2ce66 --- /dev/null +++ b/Assets/Prefabs/Goblin.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 657a935810a240f42bf9528108ad81e0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Test.unity b/Assets/Scenes/Test.unity index 067660b..61ad374 100644 --- a/Assets/Scenes/Test.unity +++ b/Assets/Scenes/Test.unity @@ -1490,90 +1490,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 965998752200834250, guid: a7f273d812293e54d92972f62e1f0159, type: 3} m_PrefabInstance: {fileID: 331482253} m_PrefabAsset: {fileID: 0} ---- !u!1 &341539238 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 341539239} - - component: {fileID: 341539240} - m_Layer: 7 - m_Name: Visual - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &341539239 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 341539238} - 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: 1497842580} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &341539240 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 341539238} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 769195415 - m_SortingLayer: 3 - m_SortingOrder: 0 - m_Sprite: {fileID: 21300000, guid: 75e389298ad4a4346ba49430514b0629, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!1001 &354645687 PrefabInstance: m_ObjectHideFlags: 0 @@ -1920,123 +1836,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} ---- !u!1 &428387988 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 428387992} - - component: {fileID: 428387991} - - component: {fileID: 428387990} - - component: {fileID: 428387989} - m_Layer: 7 - m_Name: Goblin (2) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!70 &428387989 -CapsuleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428387988} - m_Enabled: 1 - 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_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - m_Size: {x: 0.5, y: 0.89} - m_Direction: 0 ---- !u!50 &428387990 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428387988} - m_BodyType: 0 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 0.0001 - m_LinearDrag: 0 - m_AngularDrag: 1 - m_GravityScale: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 4 ---- !u!114 &428387991 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428387988} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 852eca26194d18e4fac550283d37f0a1, type: 3} - m_Name: - m_EditorClassIdentifier: - _animator: {fileID: 0} - _movementSpeed: 1.2 - _bonesSide: {fileID: 0} - _bonesBack: {fileID: 0} - _spawnPoint: {fileID: 1544656458} - _mapLayer: - serializedVersion: 2 - m_Bits: 8 ---- !u!4 &428387992 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 428387988} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 6.34, y: 3.496, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2096368756} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &448828893 stripped Transform: m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} @@ -2725,123 +2524,6 @@ Transform: - {fileID: 799186571} m_Father: {fileID: 617249160} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &841812201 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 841812205} - - component: {fileID: 841812204} - - component: {fileID: 841812203} - - component: {fileID: 841812202} - m_Layer: 7 - m_Name: Goblin - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!70 &841812202 -CapsuleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 841812201} - m_Enabled: 1 - 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_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - m_Size: {x: 0.5, y: 0.89} - m_Direction: 0 ---- !u!50 &841812203 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 841812201} - m_BodyType: 0 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 0.0001 - m_LinearDrag: 0 - m_AngularDrag: 1 - m_GravityScale: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 4 ---- !u!114 &841812204 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 841812201} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 852eca26194d18e4fac550283d37f0a1, type: 3} - m_Name: - m_EditorClassIdentifier: - _animator: {fileID: 0} - _movementSpeed: 1.2 - _bonesSide: {fileID: 0} - _bonesBack: {fileID: 0} - _spawnPoint: {fileID: 1544656458} - _mapLayer: - serializedVersion: 2 - m_Bits: 8 ---- !u!4 &841812205 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 841812201} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3.3400002, y: 2.746, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1262117648} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &871569242 PrefabInstance: m_ObjectHideFlags: 0 @@ -3372,90 +3054,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: 3d1aa56cd139405448c73b1385177b04, type: 3} m_PrefabInstance: {fileID: 1247449920} m_PrefabAsset: {fileID: 0} ---- !u!1 &1262117647 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1262117648} - - component: {fileID: 1262117649} - m_Layer: 7 - m_Name: Visual - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1262117648 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1262117647} - 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: 841812205} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &1262117649 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1262117647} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 769195415 - m_SortingLayer: 3 - m_SortingOrder: 0 - m_Sprite: {fileID: 21300000, guid: 75e389298ad4a4346ba49430514b0629, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!1001 &1275134451 PrefabInstance: m_ObjectHideFlags: 0 @@ -3671,123 +3269,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} m_PrefabInstance: {fileID: 391078385} m_PrefabAsset: {fileID: 0} ---- !u!1 &1497842576 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1497842580} - - component: {fileID: 1497842579} - - component: {fileID: 1497842578} - - component: {fileID: 1497842577} - m_Layer: 7 - m_Name: Goblin (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!70 &1497842577 -CapsuleCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1497842576} - m_Enabled: 1 - 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_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - m_Size: {x: 0.5, y: 0.89} - m_Direction: 0 ---- !u!50 &1497842578 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1497842576} - m_BodyType: 0 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 0.0001 - m_LinearDrag: 0 - m_AngularDrag: 1 - m_GravityScale: 1 - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 4 ---- !u!114 &1497842579 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1497842576} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 852eca26194d18e4fac550283d37f0a1, type: 3} - m_Name: - m_EditorClassIdentifier: - _animator: {fileID: 0} - _movementSpeed: 1.2 - _bonesSide: {fileID: 0} - _bonesBack: {fileID: 0} - _spawnPoint: {fileID: 1544656458} - _mapLayer: - serializedVersion: 2 - m_Bits: 8 ---- !u!4 &1497842580 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1497842576} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.59, y: 0.99600005, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 341539239} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1539049558 PrefabInstance: m_ObjectHideFlags: 0 @@ -3948,6 +3429,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1544656459} + - component: {fileID: 1544656460} m_Layer: 0 m_Name: GoblinsSpawnPoint m_TagString: Untagged @@ -3970,6 +3452,21 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1544656460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1544656458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4eeeff2f5d376d04793a6175a82f037c, type: 3} + m_Name: + m_EditorClassIdentifier: + _prefab: {fileID: 3323642218630463498, guid: 657a935810a240f42bf9528108ad81e0, type: 3} + _maxCharacters: 2 + _spawnPoint: {fileID: 0} --- !u!1001 &1573903785 PrefabInstance: m_ObjectHideFlags: 0 @@ -4516,90 +4013,6 @@ Transform: - {fileID: 1923000538} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2096368755 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2096368756} - - component: {fileID: 2096368757} - m_Layer: 7 - m_Name: Visual - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2096368756 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2096368755} - 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: 428387992} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &2096368757 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2096368755} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 769195415 - m_SortingLayer: 3 - m_SortingOrder: 0 - m_Sprite: {fileID: 21300000, guid: 75e389298ad4a4346ba49430514b0629, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!4 &2133847487 stripped Transform: m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: 3d1aa56cd139405448c73b1385177b04, type: 3} @@ -4766,9 +4179,6 @@ SceneRoots: m_Roots: - {fileID: 331482253} - {fileID: 17312388} - - {fileID: 841812205} - - {fileID: 1497842580} - - {fileID: 428387992} - {fileID: 1544656459} - {fileID: 617249160} - {fileID: 2096110260} diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs index 4504764..95b8256 100644 --- a/Assets/Scripts/Character.cs +++ b/Assets/Scripts/Character.cs @@ -1,4 +1,5 @@ using System.Linq; +using System; using UnityEngine; public abstract class Character : MonoBehaviour @@ -11,13 +12,11 @@ public abstract class Character : MonoBehaviour protected GameObject _bonesSide; [SerializeField] protected GameObject _bonesBack; - [SerializeField] - protected GameObject _spawnPoint; + [SerializeField] private LayerMask _mapLayer; - protected SpriteRenderer _spriteRenderer; @@ -36,20 +35,16 @@ public abstract class Character : MonoBehaviour protected bool isAllowLeft = true; private Vector2 _cellSize; + public event EventHandler OnCharacterDeath; + private void Start() { _body = GetComponent(); _capsuleCollider = GetComponent(); _spriteRenderer = GetComponentInChildren(); - _cellSize = new Vector2(0.6f, 1f); - Spawn(); + _cellSize = new Vector2(0.6f, 1f); } - - protected void Spawn() - { - transform.position = _spawnPoint.transform.position; - } - + protected void MoveTo(float inputHorizontal, float inputVertical) { var block = GetMapElement(); @@ -132,9 +127,9 @@ public abstract class Character : MonoBehaviour } - private void Death() + protected void Death() { - OnDeath(); + OnCharacterDeath?.Invoke(this,EventArgs.Empty); } private bool CanClimbUp() @@ -174,7 +169,6 @@ public abstract class Character : MonoBehaviour return mapElement; } - protected abstract void OnDeath(); protected abstract void SetWalkingAnimation(bool isWalking); protected abstract void SetClimbingAnimation(bool isClimbing); diff --git a/Assets/Scripts/CharacterSpawner.cs b/Assets/Scripts/CharacterSpawner.cs new file mode 100644 index 0000000..4addf1b --- /dev/null +++ b/Assets/Scripts/CharacterSpawner.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CharacterSpawner : MonoBehaviour +{ + [SerializeField] + private GameObject _prefab; + + [SerializeField] + private int _maxCharacters=1; + + [SerializeField] + private Transform _spawnPoint; + + private int _respawnTimeout = 4; + private float _respawnElementTimer; + + private List _characters; + + // Start is called before the first frame update + private void Start() + { + if(_spawnPoint==null) + { + _spawnPoint=gameObject.transform; + } + _characters=new List(); + } + + // Update is called once per frame + private void Update() + { + if(_characters.Count<_maxCharacters) + { + _respawnElementTimer -= Time.deltaTime; + if (_respawnElementTimer <= 0) + { + _respawnElementTimer = _respawnTimeout; + var prefab= Instantiate(_prefab, _spawnPoint.position, _spawnPoint.rotation); + var character=prefab.GetComponent(); + character.OnCharacterDeath+=OnCharacterDeath; + + _characters.Add(character); + } + return; + } + } + + private void OnCharacterDeath(object sender, EventArgs e) + { + var character=(sender as Character); + character.OnCharacterDeath-=OnCharacterDeath; + _characters.Remove(character); + Destroy(character.gameObject); + } +} diff --git a/Assets/Scripts/CharacterSpawner.cs.meta b/Assets/Scripts/CharacterSpawner.cs.meta new file mode 100644 index 0000000..d35dfea --- /dev/null +++ b/Assets/Scripts/CharacterSpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4eeeff2f5d376d04793a6175a82f037c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EnemyAI.cs b/Assets/Scripts/EnemyAI.cs index 6317230..f2fbaca 100644 --- a/Assets/Scripts/EnemyAI.cs +++ b/Assets/Scripts/EnemyAI.cs @@ -2,16 +2,6 @@ public class EnemyAI : Character { - private bool _needRespawn = false; - private int _respawnTimeout = 4; - private float _respawnElementTimer; - - protected override void OnDeath() - { - _needRespawn = true; - _spriteRenderer.enabled =false; - } - protected override void SetClimbingAnimation(bool isClimbing) { } @@ -22,19 +12,6 @@ public class EnemyAI : Character private void Update() { - if(_needRespawn) - { - _respawnElementTimer -= Time.deltaTime; - if (_respawnElementTimer <= 0) - { - _respawnElementTimer = _respawnTimeout; - _needRespawn = false; - _spriteRenderer.enabled =true; - Spawn(); - } - return; - } - float horizontal = 0; float vertical = 0; @@ -56,7 +33,6 @@ public class EnemyAI : Character { if (Mathf.Abs(Player.Instance.transform.position.x - transform.position.x) < 0.1f) { - print($"horizontal block"); horizontal = 0; } else if (directionToPlayer.x < 0) @@ -65,7 +41,6 @@ public class EnemyAI : Character { horizontal = 1; } } - print($"horizontal {horizontal}"); if (Input.GetKey(KeyCode.T)) { vertical = 1; } diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs index 1ba96e4..850db7e 100644 --- a/Assets/Scripts/Player.cs +++ b/Assets/Scripts/Player.cs @@ -118,17 +118,14 @@ public class Player : Character _animator.SetBool("Climb", isClimbing); } - protected override void OnDeath() + protected void OnDeath() { Lives--; - Spawn(); if (Lives==0) { print("game over"); } - - } } diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index c6bf695..b33613d 100644 --- a/ProjectSettings/Physics2DSettings.asset +++ b/ProjectSettings/Physics2DSettings.asset @@ -3,7 +3,7 @@ --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 - serializedVersion: 5 + serializedVersion: 6 m_Gravity: {x: 0, y: -9.8} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 @@ -44,13 +44,5 @@ Physics2DSettings: m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 1 m_AutoSyncTransforms: 0 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_GizmoOptions: 10 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff