From 2ba3232ceb0f99765beb84cae7ecee0a7e30f428 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:16:43 +0300
Subject: [PATCH 1/7] Enemy move

---
 Assets/Enemies/Enemies/FirstEnemy.asset       |   4 +-
 .../Enemies/Scripts/AbstractClasses/Enemy.cs  |  22 +-
 Assets/Enemies/Scripts/Data/EnemyData.cs      |   2 +-
 Assets/Enemies/Scripts/Enemies/UsualEnemy.cs  |  17 +-
 Assets/Enemies/Scripts/Interfaces/Ienemy.cs   |   1 -
 Assets/Enemies/Sprites/enemy.png.meta         |  74 ++++-
 Assets/Scenes/SampleScene.unity               | 270 +++++++++++++++---
 Assets/Sprites/background.png.meta            |   4 +-
 8 files changed, 335 insertions(+), 59 deletions(-)

diff --git a/Assets/Enemies/Enemies/FirstEnemy.asset b/Assets/Enemies/Enemies/FirstEnemy.asset
index 37e7c58..d430a7f 100644
--- a/Assets/Enemies/Enemies/FirstEnemy.asset
+++ b/Assets/Enemies/Enemies/FirstEnemy.asset
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:d495c1419b7f95f65559715b21c6115ceea53e646f29b5eb0e18c82fe1f497f4
-size 498
+oid sha256:f1e01a495b171f905d93265b536bfa22ce206bb2ebad82b703052e638b0905e0
+size 560
diff --git a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
index f1fdd62..009bd28 100644
--- a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
+++ b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
@@ -1,18 +1,26 @@
 using UnityEngine;
 namespace Enemies
 {
+    [RequireComponent(typeof(SpriteRenderer))]
     public abstract class Enemy : MonoBehaviour, IEnemy
     {
-
-
-        [SerializeField] EnemyData _enemyData;
-        Transform _playerTransform;
-        bool _stunned;
-
+        [SerializeField] protected EnemyData enemyData;
+        protected Transform playerTransform;
+        bool _stunned = false;
         protected virtual void Start()
         {
-            _playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
+            playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
         }
+        protected virtual void FixedUpdate()
+        {
+            if (!_stunned)
+            {
+                Move();
+            }
+        }
+        protected abstract void Move();
+        protected abstract void Attack();
+        protected abstract void Die();
         public int ApplyDamage(int power)
         {
             return power;
diff --git a/Assets/Enemies/Scripts/Data/EnemyData.cs b/Assets/Enemies/Scripts/Data/EnemyData.cs
index 304fdb2..075cc70 100644
--- a/Assets/Enemies/Scripts/Data/EnemyData.cs
+++ b/Assets/Enemies/Scripts/Data/EnemyData.cs
@@ -14,6 +14,6 @@ namespace Enemies
         public float attackRange;
         public int attackPower;
         [Header("Visuals")]
-        public Sprite sprite;
+        public Sprite spriteIdle;
     }
 }
diff --git a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
index ef3a400..2660e5b 100644
--- a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
+++ b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
@@ -6,17 +6,28 @@ namespace Enemies
 {
     public class UsualEnemy : Enemy
     {
-        private void Move()
+        SpriteRenderer _spriteRenderer;
+
+        protected override void Attack()
         {
+            throw new System.NotImplementedException();
+        }
 
+        protected override void Die()
+        {
+            throw new System.NotImplementedException();
         }
 
-        private void Attack()
+        protected override void Move()
         {
+            transform.position = Vector2.MoveTowards(transform.position, playerTransform.position, enemyData.speed * Time.fixedDeltaTime);
         }
 
-        private void Die()
+        protected override void Start()
         {
+            base.Start();
+            _spriteRenderer = GetComponent<SpriteRenderer>();
+            _spriteRenderer.sprite = enemyData.spriteIdle;
         }
     }
 }
diff --git a/Assets/Enemies/Scripts/Interfaces/Ienemy.cs b/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
index 017422b..5a6beb7 100644
--- a/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
+++ b/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
@@ -1,6 +1,5 @@
 public interface IEnemy
 {
-
     private void Move()
     {
     }
diff --git a/Assets/Enemies/Sprites/enemy.png.meta b/Assets/Enemies/Sprites/enemy.png.meta
index 5549e57..48a358f 100644
--- a/Assets/Enemies/Sprites/enemy.png.meta
+++ b/Assets/Enemies/Sprites/enemy.png.meta
@@ -42,7 +42,7 @@ TextureImporter:
   nPOTScale: 0
   lightmap: 0
   compressionQuality: 50
-  spriteMode: 0
+  spriteMode: 2
   spriteExtrude: 1
   spriteMeshType: 1
   alignment: 0
@@ -115,18 +115,84 @@ TextureImporter:
     forceMaximumCompressionQuality_BC6H_BC7: 0
   spriteSheet:
     serializedVersion: 2
-    sprites: []
+    sprites:
+    - serializedVersion: 2
+      name: enemy_0
+      rect:
+        serializedVersion: 2
+        x: 112
+        y: 368
+        width: 96
+        height: 184
+      alignment: 0
+      pivot: {x: 0, y: 0}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 2dc465e3cca877f4a9cebe48311e6c5e
+      internalID: -310729417
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: enemy_1
+      rect:
+        serializedVersion: 2
+        x: 424
+        y: 368
+        width: 112
+        height: 168
+      alignment: 0
+      pivot: {x: 0, y: 0}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: 28ab0e4ead8f4054eb4e9b5b29e15a85
+      internalID: 629391732
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
+    - serializedVersion: 2
+      name: enemy_2
+      rect:
+        serializedVersion: 2
+        x: 80
+        y: 56
+        width: 168
+        height: 168
+      alignment: 0
+      pivot: {x: 0, y: 0}
+      border: {x: 0, y: 0, z: 0, w: 0}
+      outline: []
+      physicsShape: []
+      tessellationDetail: 0
+      bones: []
+      spriteID: fbe3f8e6807a7b449ae54a23ba45b962
+      internalID: -889375371
+      vertices: []
+      indices: 
+      edges: []
+      weights: []
     outline: []
     physicsShape: []
     bones: []
-    spriteID: 
+    spriteID: a758f6cbd8eb8e943b482a92654a32c8
     internalID: 0
     vertices: []
     indices: 
     edges: []
     weights: []
     secondaryTextures: []
-    nameFileIdTable: {}
+    nameFileIdTable:
+      enemy_1: 629391732
+      enemy_2: -889375371
+      enemy_0: -310729417
   spritePackingTag: 
   pSDRemoveMatte: 0
   pSDShowRemoveMatteOption: 0
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index b77ef78..0fafeb5 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -177,7 +177,7 @@ Camera:
   far clip plane: 1000
   field of view: 60
   orthographic: 1
-  orthographic size: 5
+  orthographic size: 5.2817383
   m_Depth: -1
   m_CullingMask:
     serializedVersion: 2
@@ -201,7 +201,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 330585543}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 1, z: -10}
+  m_LocalPosition: {x: 0, y: 0.04, z: -10}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
@@ -330,7 +330,7 @@ Transform:
   m_GameObject: {fileID: 410087039}
   m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
   m_LocalPosition: {x: 0, y: 3, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_LocalScale: {x: 1, y: 1, z: 0.99999994}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
@@ -356,7 +356,7 @@ MonoBehaviour:
   m_ShadowLayerMask: 1
   m_LightCookieSize: {x: 1, y: 1}
   m_LightCookieOffset: {x: 0, y: 0}
---- !u!1 &783171183
+--- !u!1 &832575517
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -364,30 +364,48 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 783171184}
+  - component: {fileID: 832575519}
+  - component: {fileID: 832575518}
   m_Layer: 0
-  m_Name: StupidPlayer
-  m_TagString: Player
+  m_Name: Global Volume
+  m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!4 &783171184
+--- !u!114 &832575518
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 832575517}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IsGlobal: 1
+  priority: 0
+  blendDistance: 0
+  weight: 1
+  sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2}
+--- !u!4 &832575519
 Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 783171183}
+  m_GameObject: {fileID: 832575517}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0.1140461, y: -0.21444988, z: 0.038454056}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 4
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &832575517
+--- !u!1 &1409384834
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -395,46 +413,82 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 832575519}
-  - component: {fileID: 832575518}
+  - component: {fileID: 1409384836}
+  - component: {fileID: 1409384835}
   m_Layer: 0
-  m_Name: Global Volume
-  m_TagString: Untagged
+  m_Name: StupidPlayer
+  m_TagString: Player
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!114 &832575518
-MonoBehaviour:
+--- !u!212 &1409384835
+SpriteRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 832575517}
+  m_GameObject: {fileID: 1409384834}
   m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_IsGlobal: 1
-  priority: 0
-  blendDistance: 0
-  weight: 1
-  sharedProfile: {fileID: 11400000, guid: a6560a915ef98420e9faacc1c7438823, type: 2}
---- !u!4 &832575519
+  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: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  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_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6,
+    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 &1409384836
 Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 832575517}
+  m_GameObject: {fileID: 1409384834}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalPosition: {x: -4.72, y: 0.35, z: -0.694693}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 2
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1703298692
 GameObject:
@@ -445,7 +499,8 @@ GameObject:
   serializedVersion: 6
   m_Component:
   - component: {fileID: 1703298694}
-  - component: {fileID: 1703298693}
+  - component: {fileID: 1703298695}
+  - component: {fileID: 1703298696}
   m_Layer: 0
   m_Name: UsualEnemy
   m_TagString: Untagged
@@ -453,7 +508,75 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!114 &1703298693
+--- !u!4 &1703298694
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 1.51, y: -0.21444988, z: 0.038454056}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1703298695
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  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: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  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_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6,
+    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!114 &1703298696
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -465,19 +588,88 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 56d6b620f13b6d94688a58625d0382d2, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  _enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
---- !u!4 &1703298694
+  enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
+--- !u!1 &1771414120
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1771414122}
+  - component: {fileID: 1771414121}
+  m_Layer: 0
+  m_Name: BackGround
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!212 &1771414121
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1771414120}
+  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: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  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: -50
+  m_Sprite: {fileID: 21300000, guid: a5e3b6e74c301f34da9f103e407c8357, 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 &1771414122
 Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
+  m_GameObject: {fileID: 1771414120}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0.1140461, y: -0.21444988, z: 0.038454056}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Sprites/background.png.meta b/Assets/Sprites/background.png.meta
index fcdf1df..3176385 100644
--- a/Assets/Sprites/background.png.meta
+++ b/Assets/Sprites/background.png.meta
@@ -42,7 +42,7 @@ TextureImporter:
   nPOTScale: 0
   lightmap: 0
   compressionQuality: 50
-  spriteMode: 0
+  spriteMode: 1
   spriteExtrude: 1
   spriteMeshType: 1
   alignment: 0
@@ -119,7 +119,7 @@ TextureImporter:
     outline: []
     physicsShape: []
     bones: []
-    spriteID: 
+    spriteID: 5e97eb03825dee720800000000000000
     internalID: 0
     vertices: []
     indices: 
-- 
GitLab


From 966f99d1e26e015ec6bf1f637dd74033040fabc8 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:19:13 +0300
Subject: [PATCH 2/7] fix flip

---
 Assets/Enemies/Scripts/Enemies/UsualEnemy.cs |  1 +
 Assets/Scenes/SampleScene.unity              | 88 +++++++++++++++++++-
 2 files changed, 86 insertions(+), 3 deletions(-)

diff --git a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
index 2660e5b..e7c52fb 100644
--- a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
+++ b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
@@ -21,6 +21,7 @@ namespace Enemies
         protected override void Move()
         {
             transform.position = Vector2.MoveTowards(transform.position, playerTransform.position, enemyData.speed * Time.fixedDeltaTime);
+            _spriteRenderer.flipX = transform.position.x < playerTransform.position.x;
         }
 
         protected override void Start()
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index 0fafeb5..4cccfde 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -415,6 +415,7 @@ GameObject:
   m_Component:
   - component: {fileID: 1409384836}
   - component: {fileID: 1409384835}
+  - component: {fileID: 1409384837}
   m_Layer: 0
   m_Name: StupidPlayer
   m_TagString: Player
@@ -490,6 +491,70 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!58 &1409384837
+CircleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1409384834}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0, y: 0}
+  serializedVersion: 2
+  m_Radius: 0.5
+--- !u!1 &1624989161
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1624989162}
+  - component: {fileID: 1624989163}
+  m_Layer: 0
+  m_Name: AttackRange
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1624989162
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1624989161}
+  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: 1703298694}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!70 &1624989163
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1624989161}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: -0.55606115, y: 0.19397485}
+  m_Size: {x: 0.83622336, y: 1.594856}
+  m_Direction: 0
 --- !u!1 &1703298692
 GameObject:
   m_ObjectHideFlags: 0
@@ -501,6 +566,7 @@ GameObject:
   - component: {fileID: 1703298694}
   - component: {fileID: 1703298695}
   - component: {fileID: 1703298696}
+  - component: {fileID: 1703298697}
   m_Layer: 0
   m_Name: UsualEnemy
   m_TagString: Untagged
@@ -519,7 +585,8 @@ Transform:
   m_LocalPosition: {x: 1.51, y: -0.21444988, z: 0.038454056}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
+  m_Children:
+  - {fileID: 1624989162}
   m_Father: {fileID: 0}
   m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -564,8 +631,7 @@ SpriteRenderer:
   m_SortingLayerID: 0
   m_SortingLayer: 0
   m_SortingOrder: 0
-  m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6,
-    type: 3}
+  m_Sprite: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
   m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_FlipX: 0
   m_FlipY: 0
@@ -589,6 +655,22 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
+--- !u!70 &1703298697
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0.10345328, y: -0.064658225}
+  m_Size: {x: 0.6379137, y: 1.4914027}
+  m_Direction: 0
 --- !u!1 &1771414120
 GameObject:
   m_ObjectHideFlags: 0
-- 
GitLab


From 715976157298b38a7e9826bd6bf7f7a23162a734 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:33:16 +0300
Subject: [PATCH 3/7] add animations to enemy

---
 Assets/Enemies/Enemies/FirstEnemy.meta        |   8 +
 .../Enemies/FirstEnemy/Animations.meta        |   8 +
 .../Enemies/FirstEnemy/Animations/Attack.anim |  53 +++++
 .../FirstEnemy/Animations/Attack.anim.meta    |   8 +
 .../Enemies/FirstEnemy/Animations/Die.anim    |  68 ++++++
 .../FirstEnemy/Animations/Die.anim.meta       |   8 +
 .../Animations/UsualEnemy.controller          | 217 ++++++++++++++++++
 .../Animations/UsualEnemy.controller.meta     |   8 +
 .../Enemies/FirstEnemy/Animations/Walk.anim   |  74 ++++++
 .../FirstEnemy/Animations/Walk.anim.meta      |   8 +
 .../Enemies/{ => FirstEnemy}/FirstEnemy.asset |   0
 .../{ => FirstEnemy}/FirstEnemy.asset.meta    |   0
 .../Enemies/Scripts/AbstractClasses/Enemy.cs  |   5 +
 Assets/Enemies/Scripts/Attacks.meta           |   8 +
 Assets/Enemies/Scripts/Attacks/AttackRange.cs |  18 ++
 .../Scripts/Attacks/AttackRange.cs.meta       |  11 +
 Assets/Enemies/Scripts/Data/EnemyData.cs      |   2 -
 Assets/Enemies/Scripts/Enemies/UsualEnemy.cs  |  22 +-
 Assets/Scenes/SampleScene.unity               | 118 ++++++++++
 19 files changed, 631 insertions(+), 13 deletions(-)
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy.meta
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations.meta
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim.meta
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim.meta
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller.meta
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
 create mode 100644 Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim.meta
 rename Assets/Enemies/Enemies/{ => FirstEnemy}/FirstEnemy.asset (100%)
 rename Assets/Enemies/Enemies/{ => FirstEnemy}/FirstEnemy.asset.meta (100%)
 create mode 100644 Assets/Enemies/Scripts/Attacks.meta
 create mode 100644 Assets/Enemies/Scripts/Attacks/AttackRange.cs
 create mode 100644 Assets/Enemies/Scripts/Attacks/AttackRange.cs.meta

diff --git a/Assets/Enemies/Enemies/FirstEnemy.meta b/Assets/Enemies/Enemies/FirstEnemy.meta
new file mode 100644
index 0000000..31a0373
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3fba4d9ec7cc4684e9c7d206bb413837
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations.meta b/Assets/Enemies/Enemies/FirstEnemy/Animations.meta
new file mode 100644
index 0000000..feb05ce
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8de3148d8c6c36d4d94938389f0a112e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim b/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim
new file mode 100644
index 0000000..6a950e2
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim
@@ -0,0 +1,53 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Attack
+  serializedVersion: 6
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves: []
+  m_PPtrCurves: []
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings: []
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 1
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 1
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves: []
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim.meta b/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim.meta
new file mode 100644
index 0000000..37d56b5
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Attack.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1b99f4de7ddae134f9a5025873e4a6b8
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim b/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim
new file mode 100644
index 0000000..a98d88c
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim
@@ -0,0 +1,68 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Die
+  serializedVersion: 6
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves: []
+  m_PPtrCurves:
+  - curve:
+    - time: 0
+      value: {fileID: -889375371, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    attribute: m_Sprite
+    path: 
+    classID: 212
+    script: {fileID: 0}
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 0
+      script: {fileID: 0}
+      typeID: 212
+      customType: 23
+      isPPtrCurve: 1
+    pptrCurveMapping:
+    - {fileID: -889375371, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0.016666668
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 1
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves: []
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim.meta b/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim.meta
new file mode 100644
index 0000000..a12092f
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Die.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 17d151a90a078a342ba31df6412aafa0
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller b/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller
new file mode 100644
index 0000000..d97a894
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller
@@ -0,0 +1,217 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-7266938796984961159
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Die
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions: []
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7400000, guid: 17d151a90a078a342ba31df6412aafa0, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
+--- !u!1101 &-5495440772653595673
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: Die
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -7266938796984961159}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.63414633
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1107 &-5139434715830223189
+AnimatorStateMachine:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Base Layer
+  m_ChildStates:
+  - serializedVersion: 1
+    m_State: {fileID: 4653501528613171178}
+    m_Position: {x: 300, y: 120, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -7266938796984961159}
+    m_Position: {x: 310, y: 220, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -3253507032739876015}
+    m_Position: {x: 300, y: 20, z: 0}
+  m_ChildStateMachines: []
+  m_AnyStateTransitions: []
+  m_EntryTransitions: []
+  m_StateMachineTransitions: {}
+  m_StateMachineBehaviours: []
+  m_AnyStatePosition: {x: 50, y: 20, z: 0}
+  m_EntryPosition: {x: 50, y: 120, z: 0}
+  m_ExitPosition: {x: 800, y: 120, z: 0}
+  m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+  m_DefaultState: {fileID: 4653501528613171178}
+--- !u!1102 &-3253507032739876015
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Attack
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: 3558637664719945286}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7400000, guid: 1b99f4de7ddae134f9a5025873e4a6b8, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
+--- !u!91 &9100000
+AnimatorController:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: UsualEnemy
+  serializedVersion: 5
+  m_AnimatorParameters:
+  - m_Name: Die
+    m_Type: 9
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 0}
+  - m_Name: Attack
+    m_Type: 9
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 0}
+  m_AnimatorLayers:
+  - serializedVersion: 5
+    m_Name: Base Layer
+    m_StateMachine: {fileID: -5139434715830223189}
+    m_Mask: {fileID: 0}
+    m_Motions: []
+    m_Behaviours: []
+    m_BlendingMode: 0
+    m_SyncedLayerIndex: -1
+    m_DefaultWeight: 0
+    m_IKPass: 0
+    m_SyncedLayerAffectsTiming: 0
+    m_Controller: {fileID: 9100000}
+--- !u!1101 &3216377058792839915
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: Attack
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -3253507032739876015}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.63414633
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1101 &3558637664719945286
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions: []
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 4653501528613171178}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1102 &4653501528613171178
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Walk
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: -5495440772653595673}
+  - {fileID: 3216377058792839915}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7400000, guid: 978a9d81217999342baefbdfd5dd0358, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller.meta b/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller.meta
new file mode 100644
index 0000000..bdc2010
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/UsualEnemy.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2459cfbe460c1754ab792da0c4a50ff6
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 9100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
new file mode 100644
index 0000000..fbe9a30
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
@@ -0,0 +1,74 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Walk
+  serializedVersion: 6
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves: []
+  m_PPtrCurves:
+  - curve:
+    - time: 0
+      value: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    - time: 0.33333334
+      value: {fileID: 629391732, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    - time: 0.6666667
+      value: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    attribute: m_Sprite
+    path: 
+    classID: 212
+    script: {fileID: 0}
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 0
+      script: {fileID: 0}
+      typeID: 212
+      customType: 23
+      isPPtrCurve: 1
+    pptrCurveMapping:
+    - {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    - {fileID: 629391732, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+    - {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0.68333334
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 1
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves: []
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim.meta b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim.meta
new file mode 100644
index 0000000..8ec74fb
--- /dev/null
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 978a9d81217999342baefbdfd5dd0358
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Enemies/FirstEnemy.asset b/Assets/Enemies/Enemies/FirstEnemy/FirstEnemy.asset
similarity index 100%
rename from Assets/Enemies/Enemies/FirstEnemy.asset
rename to Assets/Enemies/Enemies/FirstEnemy/FirstEnemy.asset
diff --git a/Assets/Enemies/Enemies/FirstEnemy.asset.meta b/Assets/Enemies/Enemies/FirstEnemy/FirstEnemy.asset.meta
similarity index 100%
rename from Assets/Enemies/Enemies/FirstEnemy.asset.meta
rename to Assets/Enemies/Enemies/FirstEnemy/FirstEnemy.asset.meta
diff --git a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
index 009bd28..9f3f2ab 100644
--- a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
+++ b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
@@ -20,6 +20,11 @@ namespace Enemies
         }
         protected abstract void Move();
         protected abstract void Attack();
+
+        public virtual void InRange()
+        {
+            Attack();
+        }
         protected abstract void Die();
         public int ApplyDamage(int power)
         {
diff --git a/Assets/Enemies/Scripts/Attacks.meta b/Assets/Enemies/Scripts/Attacks.meta
new file mode 100644
index 0000000..aca79d3
--- /dev/null
+++ b/Assets/Enemies/Scripts/Attacks.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 00cf117c6de4b5c4ab01db567f892c48
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Scripts/Attacks/AttackRange.cs b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
new file mode 100644
index 0000000..d4b90d3
--- /dev/null
+++ b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace Enemies
+{
+
+    public class AttackRange : MonoBehaviour
+    {
+        [SerializeField] Enemy _enemyScript;
+        void OnTriggerEnter(Collider other)
+        {
+            if (other.gameObject.CompareTag("Player"))
+            {
+                _enemyScript.InRange();
+            }
+        }
+    }
+}
diff --git a/Assets/Enemies/Scripts/Attacks/AttackRange.cs.meta b/Assets/Enemies/Scripts/Attacks/AttackRange.cs.meta
new file mode 100644
index 0000000..ae7e008
--- /dev/null
+++ b/Assets/Enemies/Scripts/Attacks/AttackRange.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 686bd097f9176b7469189d0b5e47baac
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Scripts/Data/EnemyData.cs b/Assets/Enemies/Scripts/Data/EnemyData.cs
index 075cc70..a5dd3f9 100644
--- a/Assets/Enemies/Scripts/Data/EnemyData.cs
+++ b/Assets/Enemies/Scripts/Data/EnemyData.cs
@@ -13,7 +13,5 @@ namespace Enemies
         [Header("Attack")]
         public float attackRange;
         public int attackPower;
-        [Header("Visuals")]
-        public Sprite spriteIdle;
     }
 }
diff --git a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
index e7c52fb..3f8a636 100644
--- a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
+++ b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
@@ -8,14 +8,10 @@ namespace Enemies
     {
         SpriteRenderer _spriteRenderer;
 
-        protected override void Attack()
-        {
-            throw new System.NotImplementedException();
-        }
-
-        protected override void Die()
+        protected override void Start()
         {
-            throw new System.NotImplementedException();
+            base.Start();
+            _spriteRenderer = GetComponent<SpriteRenderer>();
         }
 
         protected override void Move()
@@ -24,11 +20,15 @@ namespace Enemies
             _spriteRenderer.flipX = transform.position.x < playerTransform.position.x;
         }
 
-        protected override void Start()
+        protected override void Attack()
         {
-            base.Start();
-            _spriteRenderer = GetComponent<SpriteRenderer>();
-            _spriteRenderer.sprite = enemyData.spriteIdle;
+
         }
+
+        protected override void Die()
+        {
+            Destroy(gameObject);
+        }
+
     }
 }
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index 4cccfde..56f74d4 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -567,6 +567,8 @@ GameObject:
   - component: {fileID: 1703298695}
   - component: {fileID: 1703298696}
   - component: {fileID: 1703298697}
+  - component: {fileID: 1703298698}
+  - component: {fileID: 1703298699}
   m_Layer: 0
   m_Name: UsualEnemy
   m_TagString: Untagged
@@ -671,6 +673,122 @@ CapsuleCollider2D:
   m_Offset: {x: 0.10345328, y: -0.064658225}
   m_Size: {x: 0.6379137, y: 1.4914027}
   m_Direction: 0
+--- !u!95 &1703298698
+Animator:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  m_Enabled: 1
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: 2459cfbe460c1754ab792da0c4a50ff6, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_StabilizeFeet: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
+  m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!82 &1703298699
+AudioSource:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  m_Enabled: 1
+  serializedVersion: 4
+  OutputAudioMixerGroup: {fileID: 0}
+  m_audioClip: {fileID: 0}
+  m_PlayOnAwake: 1
+  m_Volume: 1
+  m_Pitch: 1
+  Loop: 0
+  Mute: 0
+  Spatialize: 0
+  SpatializePostEffects: 0
+  Priority: 128
+  DopplerLevel: 1
+  MinDistance: 1
+  MaxDistance: 500
+  Pan2D: 0
+  rolloffMode: 0
+  BypassEffects: 0
+  BypassListenerEffects: 0
+  BypassReverbZones: 0
+  rolloffCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 1
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    - serializedVersion: 3
+      time: 1
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  panLevelCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  spreadCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  reverbZoneMixCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 1
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
 --- !u!1 &1771414120
 GameObject:
   m_ObjectHideFlags: 0
-- 
GitLab


From 2cf1d4bac43f111d2d46fa91906998e2f6c5c223 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:44:14 +0300
Subject: [PATCH 4/7] add enemy tag

---
 .../Enemies/FirstEnemy/Animations/Walk.anim   |  6 +-
 .../Enemies/Scripts/AbstractClasses/Enemy.cs  |  5 +-
 Assets/Enemies/Scripts/Attacks/AttackRange.cs |  2 +-
 Assets/Enemies/Scripts/Enemies/UsualEnemy.cs  | 10 ++-
 Assets/Scenes/SampleScene.unity               | 76 +++++++++++++++++--
 ProjectSettings/TagManager.asset              |  4 +-
 6 files changed, 86 insertions(+), 17 deletions(-)

diff --git a/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
index fbe9a30..6f36136 100644
--- a/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
+++ b/Assets/Enemies/Enemies/FirstEnemy/Animations/Walk.anim
@@ -21,9 +21,9 @@ AnimationClip:
   - curve:
     - time: 0
       value: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
-    - time: 0.33333334
+    - time: 0.16666667
       value: {fileID: 629391732, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
-    - time: 0.6666667
+    - time: 0.33333334
       value: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, type: 3}
     attribute: m_Sprite
     path: 
@@ -52,7 +52,7 @@ AnimationClip:
     m_AdditiveReferencePoseClip: {fileID: 0}
     m_AdditiveReferencePoseTime: 0
     m_StartTime: 0
-    m_StopTime: 0.68333334
+    m_StopTime: 0.35000002
     m_OrientationOffsetY: 0
     m_Level: 0
     m_CycleOffset: 0
diff --git a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
index 9f3f2ab..adbf84e 100644
--- a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
+++ b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
@@ -23,7 +23,10 @@ namespace Enemies
 
         public virtual void InRange()
         {
-            Attack();
+            if (!_stunned)
+            {
+                Attack();
+            }
         }
         protected abstract void Die();
         public int ApplyDamage(int power)
diff --git a/Assets/Enemies/Scripts/Attacks/AttackRange.cs b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
index d4b90d3..991a70e 100644
--- a/Assets/Enemies/Scripts/Attacks/AttackRange.cs
+++ b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
@@ -7,7 +7,7 @@ namespace Enemies
     public class AttackRange : MonoBehaviour
     {
         [SerializeField] Enemy _enemyScript;
-        void OnTriggerEnter(Collider other)
+        private void OnCollisionEnter2D(Collision2D other)
         {
             if (other.gameObject.CompareTag("Player"))
             {
diff --git a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
index 3f8a636..dde3a0d 100644
--- a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
+++ b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
@@ -7,11 +7,13 @@ namespace Enemies
     public class UsualEnemy : Enemy
     {
         SpriteRenderer _spriteRenderer;
-
+        Animator _animator;
+        public float timeToDie = 1f;
         protected override void Start()
         {
             base.Start();
             _spriteRenderer = GetComponent<SpriteRenderer>();
+            _animator = GetComponent<Animator>();
         }
 
         protected override void Move()
@@ -22,13 +24,13 @@ namespace Enemies
 
         protected override void Attack()
         {
-
+            print("Attack");
         }
 
         protected override void Die()
         {
-            Destroy(gameObject);
+            _animator.SetTrigger("Die");
+            Destroy(gameObject, timeToDie);
         }
-
     }
 }
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index 56f74d4..f759f16 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -405,6 +405,54 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1252174252
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1252174253}
+  - component: {fileID: 1252174254}
+  m_Layer: 0
+  m_Name: AttackIndicator
+  m_TagString: Enemy
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1252174253
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252174252}
+  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: 1703298694}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!70 &1252174254
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252174252}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0.012567639, y: -0.06283742}
+  m_Size: {x: 1.0781043, y: 1.7791835}
+  m_Direction: 0
 --- !u!1 &1409384834
 GameObject:
   m_ObjectHideFlags: 0
@@ -501,7 +549,7 @@ CircleCollider2D:
   m_Enabled: 1
   m_Density: 1
   m_Material: {fileID: 0}
-  m_IsTrigger: 0
+  m_IsTrigger: 1
   m_UsedByEffector: 0
   m_UsedByComposite: 0
   m_Offset: {x: 0, y: 0}
@@ -517,9 +565,10 @@ GameObject:
   m_Component:
   - component: {fileID: 1624989162}
   - component: {fileID: 1624989163}
+  - component: {fileID: 1624989164}
   m_Layer: 0
   m_Name: AttackRange
-  m_TagString: Untagged
+  m_TagString: Enemy
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
@@ -532,7 +581,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1624989161}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalPosition: {x: -0.13, y: 0.2, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
@@ -552,9 +601,22 @@ CapsuleCollider2D:
   m_IsTrigger: 1
   m_UsedByEffector: 0
   m_UsedByComposite: 0
-  m_Offset: {x: -0.55606115, y: 0.19397485}
-  m_Size: {x: 0.83622336, y: 1.594856}
+  m_Offset: {x: -0.4083022, y: 0.19397485}
+  m_Size: {x: 0.54070544, y: 1.594856}
   m_Direction: 0
+--- !u!114 &1624989164
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1624989161}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 686bd097f9176b7469189d0b5e47baac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  _enemyScript: {fileID: 1703298696}
 --- !u!1 &1703298692
 GameObject:
   m_ObjectHideFlags: 0
@@ -571,7 +633,7 @@ GameObject:
   - component: {fileID: 1703298699}
   m_Layer: 0
   m_Name: UsualEnemy
-  m_TagString: Untagged
+  m_TagString: Enemy
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
@@ -589,6 +651,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 1624989162}
+  - {fileID: 1252174253}
   m_Father: {fileID: 0}
   m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -657,6 +720,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
+  timeToDie: 1
 --- !u!70 &1703298697
 CapsuleCollider2D:
   m_ObjectHideFlags: 0
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index 4b69f59..5aa3f5f 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:8e18b1c820e9c09e16bbd1f1b7842e9fb3b0158a0921b0964e0b8fa12c6e2c01
-size 378
+oid sha256:f14dc3f00598c3a56e08f664c947e8efb5f8a458feaa14ab258b1cfd2d0097f3
+size 385
-- 
GitLab


From a00d0face22eb8a3bd80925092417f569826cc8d Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:49:20 +0300
Subject: [PATCH 5/7] fix attack

---
 Assets/Enemies/Scripts/Attacks/AttackRange.cs |  5 ++-
 Assets/Scenes/SampleScene.unity               | 44 +++++++++++++++++++
 2 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/Assets/Enemies/Scripts/Attacks/AttackRange.cs b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
index 991a70e..5b01a40 100644
--- a/Assets/Enemies/Scripts/Attacks/AttackRange.cs
+++ b/Assets/Enemies/Scripts/Attacks/AttackRange.cs
@@ -7,9 +7,10 @@ namespace Enemies
     public class AttackRange : MonoBehaviour
     {
         [SerializeField] Enemy _enemyScript;
-        private void OnCollisionEnter2D(Collision2D other)
+        private void OnTriggerEnter2D(Collider2D collision)
         {
-            if (other.gameObject.CompareTag("Player"))
+            Debug.Log("Collision" + collision.gameObject.tag);
+            if (collision.gameObject.CompareTag("Player"))
             {
                 _enemyScript.InRange();
             }
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index f759f16..1be15b2 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -464,6 +464,7 @@ GameObject:
   - component: {fileID: 1409384836}
   - component: {fileID: 1409384835}
   - component: {fileID: 1409384837}
+  - component: {fileID: 1409384838}
   m_Layer: 0
   m_Name: StupidPlayer
   m_TagString: Player
@@ -555,6 +556,27 @@ CircleCollider2D:
   m_Offset: {x: 0, y: 0}
   serializedVersion: 2
   m_Radius: 0.5
+--- !u!50 &1409384838
+Rigidbody2D:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1409384834}
+  m_BodyType: 1
+  m_Simulated: 1
+  m_UseFullKinematicContacts: 0
+  m_UseAutoMass: 0
+  m_Mass: 1
+  m_LinearDrag: 0
+  m_AngularDrag: 0.05
+  m_GravityScale: 1
+  m_Material: {fileID: 0}
+  m_Interpolate: 0
+  m_SleepingMode: 1
+  m_CollisionDetection: 0
+  m_Constraints: 0
 --- !u!1 &1624989161
 GameObject:
   m_ObjectHideFlags: 0
@@ -631,6 +653,7 @@ GameObject:
   - component: {fileID: 1703298697}
   - component: {fileID: 1703298698}
   - component: {fileID: 1703298699}
+  - component: {fileID: 1703298700}
   m_Layer: 0
   m_Name: UsualEnemy
   m_TagString: Enemy
@@ -853,6 +876,27 @@ AudioSource:
     m_PreInfinity: 2
     m_PostInfinity: 2
     m_RotationOrder: 4
+--- !u!50 &1703298700
+Rigidbody2D:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1703298692}
+  m_BodyType: 1
+  m_Simulated: 1
+  m_UseFullKinematicContacts: 0
+  m_UseAutoMass: 0
+  m_Mass: 1
+  m_LinearDrag: 0
+  m_AngularDrag: 0.05
+  m_GravityScale: 1
+  m_Material: {fileID: 0}
+  m_Interpolate: 0
+  m_SleepingMode: 1
+  m_CollisionDetection: 0
+  m_Constraints: 0
 --- !u!1 &1771414120
 GameObject:
   m_ObjectHideFlags: 0
-- 
GitLab


From bdb803e832bc854fb3c5e4cecc03a35ea020f3f5 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 18:59:33 +0300
Subject: [PATCH 6/7] think about apply damage

---
 Assets/Enemies/Prefabs/UsualEnemy.prefab      | 370 +++++++++++++++
 Assets/Enemies/Prefabs/UsualEnemy.prefab.meta |   7 +
 .../Enemies/Scripts/AbstractClasses/Enemy.cs  |  27 +-
 Assets/Enemies/Scripts/Enemies/UsualEnemy.cs  |   2 +-
 Assets/Enemies/Scripts/Interfaces/Ienemy.cs   |   1 +
 Assets/Scenes/SampleScene.unity               | 443 +++---------------
 6 files changed, 473 insertions(+), 377 deletions(-)
 create mode 100644 Assets/Enemies/Prefabs/UsualEnemy.prefab
 create mode 100644 Assets/Enemies/Prefabs/UsualEnemy.prefab.meta

diff --git a/Assets/Enemies/Prefabs/UsualEnemy.prefab b/Assets/Enemies/Prefabs/UsualEnemy.prefab
new file mode 100644
index 0000000..25e68f0
--- /dev/null
+++ b/Assets/Enemies/Prefabs/UsualEnemy.prefab
@@ -0,0 +1,370 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2270476185090606395
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2270476185090606392}
+  - component: {fileID: 2270476185090606393}
+  - component: {fileID: 2270476185090606398}
+  m_Layer: 0
+  m_Name: AttackRange
+  m_TagString: Enemy
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2270476185090606392
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185090606395}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.13, y: 0.2, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2270476185136946772}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!70 &2270476185090606393
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185090606395}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: -0.4083022, y: 0.19397485}
+  m_Size: {x: 0.54070544, y: 1.594856}
+  m_Direction: 0
+--- !u!114 &2270476185090606398
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185090606395}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 686bd097f9176b7469189d0b5e47baac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  _enemyScript: {fileID: 2270476185136946778}
+--- !u!1 &2270476185136946774
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2270476185136946772}
+  - component: {fileID: 2270476185136946773}
+  - component: {fileID: 2270476185136946778}
+  - component: {fileID: 2270476185136946779}
+  - component: {fileID: 2270476185136946776}
+  - component: {fileID: 2270476185136946777}
+  - component: {fileID: 2270476185136946782}
+  m_Layer: 0
+  m_Name: UsualEnemy
+  m_TagString: Enemy
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2270476185136946772
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 1.51, y: -0.21444988, z: 0.038454056}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2270476185090606392}
+  - {fileID: 2270476185726529919}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2270476185136946773
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  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: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  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_Sprite: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, 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!114 &2270476185136946778
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 56d6b620f13b6d94688a58625d0382d2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
+  timeToDie: 1
+--- !u!70 &2270476185136946779
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0.10345328, y: -0.064658225}
+  m_Size: {x: 0.6379137, y: 1.4914027}
+  m_Direction: 0
+--- !u!95 &2270476185136946776
+Animator:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_Enabled: 1
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: 2459cfbe460c1754ab792da0c4a50ff6, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_StabilizeFeet: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
+  m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!82 &2270476185136946777
+AudioSource:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_Enabled: 1
+  serializedVersion: 4
+  OutputAudioMixerGroup: {fileID: 0}
+  m_audioClip: {fileID: 0}
+  m_PlayOnAwake: 1
+  m_Volume: 1
+  m_Pitch: 1
+  Loop: 0
+  Mute: 0
+  Spatialize: 0
+  SpatializePostEffects: 0
+  Priority: 128
+  DopplerLevel: 1
+  MinDistance: 1
+  MaxDistance: 500
+  Pan2D: 0
+  rolloffMode: 0
+  BypassEffects: 0
+  BypassListenerEffects: 0
+  BypassReverbZones: 0
+  rolloffCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 1
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    - serializedVersion: 3
+      time: 1
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  panLevelCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  spreadCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 0
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+  reverbZoneMixCustomCurve:
+    serializedVersion: 2
+    m_Curve:
+    - serializedVersion: 3
+      time: 0
+      value: 1
+      inSlope: 0
+      outSlope: 0
+      tangentMode: 0
+      weightedMode: 0
+      inWeight: 0.33333334
+      outWeight: 0.33333334
+    m_PreInfinity: 2
+    m_PostInfinity: 2
+    m_RotationOrder: 4
+--- !u!50 &2270476185136946782
+Rigidbody2D:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185136946774}
+  m_BodyType: 1
+  m_Simulated: 1
+  m_UseFullKinematicContacts: 0
+  m_UseAutoMass: 0
+  m_Mass: 1
+  m_LinearDrag: 0
+  m_AngularDrag: 0.05
+  m_GravityScale: 1
+  m_Material: {fileID: 0}
+  m_Interpolate: 0
+  m_SleepingMode: 1
+  m_CollisionDetection: 0
+  m_Constraints: 0
+--- !u!1 &2270476185726529918
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2270476185726529919}
+  - component: {fileID: 2270476185726529916}
+  m_Layer: 0
+  m_Name: AttackIndicator
+  m_TagString: Enemy
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2270476185726529919
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185726529918}
+  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: 2270476185136946772}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!70 &2270476185726529916
+CapsuleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2270476185726529918}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0.012567639, y: -0.06283742}
+  m_Size: {x: 1.0781043, y: 1.7791835}
+  m_Direction: 0
diff --git a/Assets/Enemies/Prefabs/UsualEnemy.prefab.meta b/Assets/Enemies/Prefabs/UsualEnemy.prefab.meta
new file mode 100644
index 0000000..f449acc
--- /dev/null
+++ b/Assets/Enemies/Prefabs/UsualEnemy.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 69bf619d7a0c6694baaf2e84dfbdf015
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
index adbf84e..0ef120c 100644
--- a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
+++ b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
@@ -4,26 +4,24 @@ namespace Enemies
     [RequireComponent(typeof(SpriteRenderer))]
     public abstract class Enemy : MonoBehaviour, IEnemy
     {
-        [SerializeField] protected EnemyData enemyData;
+        [SerializeField] private EnemyData _enemyData;
         protected Transform playerTransform;
-        bool _stunned = false;
+        public bool Stunned { get; } = false;
+
         protected virtual void Start()
         {
             playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
         }
         protected virtual void FixedUpdate()
         {
-            if (!_stunned)
-            {
-                Move();
-            }
+            Move();
         }
         protected abstract void Move();
         protected abstract void Attack();
 
         public virtual void InRange()
         {
-            if (!_stunned)
+            if (!Stunned)
             {
                 Attack();
             }
@@ -31,8 +29,21 @@ namespace Enemies
         protected abstract void Die();
         public int ApplyDamage(int power)
         {
+            _enemyData.health -= power;
+            if (_enemyData.health <= 0)
+            {
+                Die();
+            }
+            // var newPower -= _enemyData.health;
             return power;
         }
-        public bool Stunned => _stunned;
+        protected int GetHealth()
+        {
+            return Stunned ? 0 : _enemyData.health + _enemyData.armory;
+        }
+        protected float GetSpeed()
+        {
+            return Stunned ? 0 : _enemyData.speed;
+        }
     }
 }
diff --git a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
index dde3a0d..6a1dcf3 100644
--- a/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
+++ b/Assets/Enemies/Scripts/Enemies/UsualEnemy.cs
@@ -18,7 +18,7 @@ namespace Enemies
 
         protected override void Move()
         {
-            transform.position = Vector2.MoveTowards(transform.position, playerTransform.position, enemyData.speed * Time.fixedDeltaTime);
+            transform.position = Vector2.MoveTowards(transform.position, playerTransform.position, GetSpeed() * Time.fixedDeltaTime);
             _spriteRenderer.flipX = transform.position.x < playerTransform.position.x;
         }
 
diff --git a/Assets/Enemies/Scripts/Interfaces/Ienemy.cs b/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
index 5a6beb7..9c26b42 100644
--- a/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
+++ b/Assets/Enemies/Scripts/Interfaces/Ienemy.cs
@@ -11,4 +11,5 @@ public interface IEnemy
     private void Die()
     {
     }
+    public int ApplyDamage(int power);
 }
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
index 1be15b2..eba625d 100644
--- a/Assets/Scenes/SampleScene.unity
+++ b/Assets/Scenes/SampleScene.unity
@@ -405,54 +405,6 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1252174252
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1252174253}
-  - component: {fileID: 1252174254}
-  m_Layer: 0
-  m_Name: AttackIndicator
-  m_TagString: Enemy
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &1252174253
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1252174252}
-  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: 1703298694}
-  m_RootOrder: 1
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!70 &1252174254
-CapsuleCollider2D:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1252174252}
-  m_Enabled: 1
-  m_Density: 1
-  m_Material: {fileID: 0}
-  m_IsTrigger: 1
-  m_UsedByEffector: 0
-  m_UsedByComposite: 0
-  m_Offset: {x: 0.012567639, y: -0.06283742}
-  m_Size: {x: 1.0781043, y: 1.7791835}
-  m_Direction: 0
 --- !u!1 &1409384834
 GameObject:
   m_ObjectHideFlags: 0
@@ -577,326 +529,6 @@ Rigidbody2D:
   m_SleepingMode: 1
   m_CollisionDetection: 0
   m_Constraints: 0
---- !u!1 &1624989161
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1624989162}
-  - component: {fileID: 1624989163}
-  - component: {fileID: 1624989164}
-  m_Layer: 0
-  m_Name: AttackRange
-  m_TagString: Enemy
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &1624989162
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1624989161}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: -0.13, y: 0.2, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 1703298694}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!70 &1624989163
-CapsuleCollider2D:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1624989161}
-  m_Enabled: 1
-  m_Density: 1
-  m_Material: {fileID: 0}
-  m_IsTrigger: 1
-  m_UsedByEffector: 0
-  m_UsedByComposite: 0
-  m_Offset: {x: -0.4083022, y: 0.19397485}
-  m_Size: {x: 0.54070544, y: 1.594856}
-  m_Direction: 0
---- !u!114 &1624989164
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1624989161}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 686bd097f9176b7469189d0b5e47baac, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  _enemyScript: {fileID: 1703298696}
---- !u!1 &1703298692
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1703298694}
-  - component: {fileID: 1703298695}
-  - component: {fileID: 1703298696}
-  - component: {fileID: 1703298697}
-  - component: {fileID: 1703298698}
-  - component: {fileID: 1703298699}
-  - component: {fileID: 1703298700}
-  m_Layer: 0
-  m_Name: UsualEnemy
-  m_TagString: Enemy
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &1703298694
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 1.51, y: -0.21444988, z: 0.038454056}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 1624989162}
-  - {fileID: 1252174253}
-  m_Father: {fileID: 0}
-  m_RootOrder: 3
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1703298695
-SpriteRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  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: 10754, guid: 0000000000000000f000000000000000, type: 0}
-  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_Sprite: {fileID: -310729417, guid: 2d5e3a83f95fd5d43ac6cda1acf17aee, 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!114 &1703298696
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 56d6b620f13b6d94688a58625d0382d2, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  enemyData: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515, type: 2}
-  timeToDie: 1
---- !u!70 &1703298697
-CapsuleCollider2D:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_Enabled: 1
-  m_Density: 1
-  m_Material: {fileID: 0}
-  m_IsTrigger: 0
-  m_UsedByEffector: 0
-  m_UsedByComposite: 0
-  m_Offset: {x: 0.10345328, y: -0.064658225}
-  m_Size: {x: 0.6379137, y: 1.4914027}
-  m_Direction: 0
---- !u!95 &1703298698
-Animator:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_Enabled: 1
-  m_Avatar: {fileID: 0}
-  m_Controller: {fileID: 9100000, guid: 2459cfbe460c1754ab792da0c4a50ff6, type: 2}
-  m_CullingMode: 0
-  m_UpdateMode: 0
-  m_ApplyRootMotion: 0
-  m_LinearVelocityBlending: 0
-  m_StabilizeFeet: 0
-  m_WarningMessage: 
-  m_HasTransformHierarchy: 1
-  m_AllowConstantClipSamplingOptimization: 1
-  m_KeepAnimatorControllerStateOnDisable: 0
---- !u!82 &1703298699
-AudioSource:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_Enabled: 1
-  serializedVersion: 4
-  OutputAudioMixerGroup: {fileID: 0}
-  m_audioClip: {fileID: 0}
-  m_PlayOnAwake: 1
-  m_Volume: 1
-  m_Pitch: 1
-  Loop: 0
-  Mute: 0
-  Spatialize: 0
-  SpatializePostEffects: 0
-  Priority: 128
-  DopplerLevel: 1
-  MinDistance: 1
-  MaxDistance: 500
-  Pan2D: 0
-  rolloffMode: 0
-  BypassEffects: 0
-  BypassListenerEffects: 0
-  BypassReverbZones: 0
-  rolloffCustomCurve:
-    serializedVersion: 2
-    m_Curve:
-    - serializedVersion: 3
-      time: 0
-      value: 1
-      inSlope: 0
-      outSlope: 0
-      tangentMode: 0
-      weightedMode: 0
-      inWeight: 0.33333334
-      outWeight: 0.33333334
-    - serializedVersion: 3
-      time: 1
-      value: 0
-      inSlope: 0
-      outSlope: 0
-      tangentMode: 0
-      weightedMode: 0
-      inWeight: 0.33333334
-      outWeight: 0.33333334
-    m_PreInfinity: 2
-    m_PostInfinity: 2
-    m_RotationOrder: 4
-  panLevelCustomCurve:
-    serializedVersion: 2
-    m_Curve:
-    - serializedVersion: 3
-      time: 0
-      value: 0
-      inSlope: 0
-      outSlope: 0
-      tangentMode: 0
-      weightedMode: 0
-      inWeight: 0.33333334
-      outWeight: 0.33333334
-    m_PreInfinity: 2
-    m_PostInfinity: 2
-    m_RotationOrder: 4
-  spreadCustomCurve:
-    serializedVersion: 2
-    m_Curve:
-    - serializedVersion: 3
-      time: 0
-      value: 0
-      inSlope: 0
-      outSlope: 0
-      tangentMode: 0
-      weightedMode: 0
-      inWeight: 0.33333334
-      outWeight: 0.33333334
-    m_PreInfinity: 2
-    m_PostInfinity: 2
-    m_RotationOrder: 4
-  reverbZoneMixCustomCurve:
-    serializedVersion: 2
-    m_Curve:
-    - serializedVersion: 3
-      time: 0
-      value: 1
-      inSlope: 0
-      outSlope: 0
-      tangentMode: 0
-      weightedMode: 0
-      inWeight: 0.33333334
-      outWeight: 0.33333334
-    m_PreInfinity: 2
-    m_PostInfinity: 2
-    m_RotationOrder: 4
---- !u!50 &1703298700
-Rigidbody2D:
-  serializedVersion: 4
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1703298692}
-  m_BodyType: 1
-  m_Simulated: 1
-  m_UseFullKinematicContacts: 0
-  m_UseAutoMass: 0
-  m_Mass: 1
-  m_LinearDrag: 0
-  m_AngularDrag: 0.05
-  m_GravityScale: 1
-  m_Material: {fileID: 0}
-  m_Interpolate: 0
-  m_SleepingMode: 1
-  m_CollisionDetection: 0
-  m_Constraints: 0
 --- !u!1 &1771414120
 GameObject:
   m_ObjectHideFlags: 0
@@ -981,3 +613,78 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &2270476186705729746
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 1.51
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: -0.21444988
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0.038454056
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946772, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946774, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: m_Name
+      value: UsualEnemy
+      objectReference: {fileID: 0}
+    - target: {fileID: 2270476185136946778, guid: 69bf619d7a0c6694baaf2e84dfbdf015,
+        type: 3}
+      propertyPath: _enemyData
+      value: 
+      objectReference: {fileID: 11400000, guid: a9f183e580e81ce42b49eb5979490515,
+        type: 2}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 69bf619d7a0c6694baaf2e84dfbdf015, type: 3}
-- 
GitLab


From da4c8548b6a19479e6567f1e9b52c67bdac396c7 Mon Sep 17 00:00:00 2001
From: Dmitriy Makarov <dimamakarov1941@yandex.ru>
Date: Sat, 15 Oct 2022 19:01:34 +0300
Subject: [PATCH 7/7] fix method enemyapplid

---
 Assets/Enemies/Scripts/AbstractClasses/Enemy.cs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
index 0ef120c..b625042 100644
--- a/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
+++ b/Assets/Enemies/Scripts/AbstractClasses/Enemy.cs
@@ -29,13 +29,13 @@ namespace Enemies
         protected abstract void Die();
         public int ApplyDamage(int power)
         {
+            var newPower = power - _enemyData.health;
             _enemyData.health -= power;
             if (_enemyData.health <= 0)
             {
                 Die();
             }
-            // var newPower -= _enemyData.health;
-            return power;
+            return newPower;
         }
         protected int GetHealth()
         {
-- 
GitLab