diff --git a/MrBigsock/Assets/Code/EmptyCollider.cs b/MrBigsock/Assets/Code/EmptyCollider.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b652a39227c30a48c0d708b4ed3007026c1598b9
--- /dev/null
+++ b/MrBigsock/Assets/Code/EmptyCollider.cs
@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+public class EmptyCollider : MonoBehaviour
+{
+    public event Action<Collider2D> OnColliderEnter2D_Action;
+    public event Action<Collider2D> OnColliderStay2D_Action;
+    public event Action<Collider2D> OnColliderExit2D_Action;
+ 
+    private void OnTriggerEnter2D(Collider2D other)
+    {
+        Debug.Log("enter");
+        OnColliderEnter2D_Action?.Invoke(other);
+    }
+
+    private void OnTriggerStay2D(Collider2D other)
+    {
+        OnColliderStay2D_Action?.Invoke(other);
+    }
+
+    private void OnTriggerExit2D(Collider2D other)
+    {
+        Debug.Log("exit");
+        OnColliderExit2D_Action?.Invoke(other);
+    }
+}
diff --git a/MrBigsock/Assets/Code/PlayerController.cs b/MrBigsock/Assets/Code/PlayerController.cs
index 2ca3d8e8420b0f05a601c3599111270dfeb0e461..becd86355722ce54ef7839f38c3cd672919998ae 100644
--- a/MrBigsock/Assets/Code/PlayerController.cs
+++ b/MrBigsock/Assets/Code/PlayerController.cs
@@ -1,4 +1,5 @@
 using System.Collections;
+using System;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.InputSystem;
@@ -18,6 +19,13 @@ public class PlayerController : MonoBehaviour
 
     bool canMove = true;
 
+
+
+    public bool Alive { get; private set; } = true;
+    public double Hp { get; private set; } = 100;
+    public DateTime NextTimeCanTakeDamage { get; private set; } = DateTime.Now;
+    public TimeSpan IFrameDuration { get; private set; } = new TimeSpan(0, 0, 2);
+
     // Start is called before the first frame update
     void Start()
     {
@@ -26,6 +34,41 @@ public class PlayerController : MonoBehaviour
         spriteRenderer = GetComponent<SpriteRenderer>();
     }
 
+
+    /*
+        Adds damage to the player if they don't have IFrames.
+    */
+    public bool TakeDamage(double amount) {
+        print($"[PlayerController.TakeDamage()] start. | {Hp} - {amount}");
+        // Check if player has IFrames
+        if(NextTimeCanTakeDamage > DateTime.Now)
+            return false;
+        // Start new IFrames
+        NextTimeCanTakeDamage = DateTime.Now + IFrameDuration;
+
+        // Add damage
+        Hp -= amount;
+
+        TryKill();
+
+        return true;
+    }
+
+    /*
+        Try to kill the player.
+    */
+    public bool TryKill() {
+        print($"[PlayerController.TryKill()] start. | {Hp}, {Alive}");
+        if(Alive && Hp <= 0) {
+            Alive = false;
+
+            LockMovement();
+
+            return true;
+        }
+        return false;
+    }
+
     private void FixedUpdate() {
         if(canMove) {
             // If movement input is not 0, try to move
diff --git a/MrBigsock/Assets/Code/orc/enemyMovement.cs b/MrBigsock/Assets/Code/orc/enemyMovement.cs
index a44932de440f37b221e5a4cd184d9c3dbc712027..c8e2e89af821d14af2ccc9e086cdaa20e7cc580a 100644
--- a/MrBigsock/Assets/Code/orc/enemyMovement.cs
+++ b/MrBigsock/Assets/Code/orc/enemyMovement.cs
@@ -1,81 +1,168 @@
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using System.Linq;
 
-public class enemyMovement : MonoBehaviour
-{
-  public float speed = 0.6f;
-  private Transform target;
-  Animator m_Animator;
-  private float distance; 
+public partial class enemyMovement : MonoBehaviour{
+    public float speed = 0.6f;
 
-  public float attackSpeed = 1f;
-  private float canAttack;
+    public float collisionOffset = 0.05f;
+    public ContactFilter2D movementFilter;
+    List<RaycastHit2D> castCollisions = new List<RaycastHit2D>();
+
+    private Transform target;
+    Animator m_Animator;
+    private float distance; 
+
+    public float attackSpeed = 1f;
+    private float canAttack;
+    private float baseDamage = 1f;
+
+    private EmptyCollider followCollider;
+    private EmptyCollider attackCollider;
+
+    private bool isInMelee = false;
+
+
+    Rigidbody2D rb;
+    
+   // private Collider2D_Proxy secondCollider;
   
-   void Start()
-    {
+   void Start(){
+        rb = GetComponent<Rigidbody2D>();
+
         m_Animator = gameObject.GetComponent<Animator>();
+
+        followCollider = transform.Find("followCollider").GetComponent<EmptyCollider>();
+        followCollider.OnColliderEnter2D_Action += Move_OnColliderEnter2D;
+        followCollider.OnColliderStay2D_Action += Move_OnColliderStay2D;
+        followCollider.OnColliderExit2D_Action += Move_OnColliderExit2D;
+
+        attackCollider = transform.Find("MeleeCollider").GetComponent<EmptyCollider>();
+        attackCollider.OnColliderEnter2D_Action += Attack_OnColliderEnter2D;
+        attackCollider.OnColliderStay2D_Action += Attack_OnColliderStay2D;
+        attackCollider.OnColliderExit2D_Action += Attack_OnColliderExit2D;
     }
 
-   private void RotateAnimation()
+      private void RotateAnimation(Vector2 direction)
     {
-        if (Input.GetAxis("Horizontal") > 0.01f){
+        if (direction.x > 0.01f){
             gameObject.GetComponent<SpriteRenderer>().flipX = false;
-            gameObject.transform.Find("weapon_axe").GetComponent<SpriteRenderer>().flipX = false;
         }
-        else if (Input.GetAxis("Horizontal") < -0.01f){
+        else if (direction.x < -0.01f){
             gameObject.GetComponent<SpriteRenderer>().flipX = true;
-            gameObject.transform.Find("weapon_axe").GetComponent<SpriteRenderer>().flipX = true;
-           
         }
             
     }
 
     private void Update(){
-        if (target != null){
-            //walk
+        if (target != null && !isInMelee){
+
+           /* //walk
             float step = speed * Time.deltaTime;
             transform.position = Vector2.MoveTowards(transform.position, target.position, step);
              
             //distance = Vector3.Distance (transform.position, target.position);
             //roter
             RotateAnimation();
+            */
+            
+            TryMove((new Vector2(target.position.x, target.position.y) - rb.position).normalized);
         }
         else{
 
         }
     }
 
-  private void OnCollisionStay2D(Collision2D other){
-     if (other.gameObject.tag == "Player"){
-        if(attackSpeed <= canAttack){
-            //add at player møste liv
-            m_Animator.SetTrigger("attack");
-        }else {
-            canAttack += Time.deltaTime;
+    private bool TryMove(Vector2 direction) {
+     
+        if(direction != Vector2.zero) {
+        
+            // Check for potential collisions
+            int count = rb.Cast(
+                direction, // X and Y values between -1 and 1 that represent the direction from the body to look for collisions
+                movementFilter, // The settings that determine where a collision can occur on such as layers to collide with
+                castCollisions, // List of collisions to store the found collisions into after the Cast is finished
+                speed * Time.fixedDeltaTime + collisionOffset); // The amount to cast equal to the movement plus an offset
+           //Debug.Log($"cast {string.Join(", ", castCollisions.Select(x => $"{x.collider.isTrigger}"))}");
+           //Debug.Log($"rb.position : {rb.position}");
+           //Debug.Log($"target.position : {target.position}");
+           //Debug.Log($"direction : {direction}");
+            if(count == 0){
+                rb.MovePosition(rb.position + direction * speed * Time.fixedDeltaTime);
+                print($"rb.position {rb.position}");
+                print($"direction {direction}");
+                RotateAnimation(direction);
+
+                return true;
+            } else {
+                return false;
+            }
+        } else {
+            // Can't move if there's no direction to move in
+            return false;
         }
-     }
-  }
+        
+    }
+}
 
 
-  private void OnTriggerEnter2D(Collider2D other){
-    if (other.gameObject.tag == "Player"){
-        
-        m_Animator.SetTrigger("walk");
-        target = other.transform;
+ public partial class enemyMovement { //attack
 
+     private void Attack_OnColliderEnter2D(Collider2D other){
+        if (other.gameObject.tag == "Player")
+            isInMelee = true;
+    }
+
+    
+
+    private void Attack_OnColliderStay2D(Collider2D other){
+        if (other.gameObject.tag == "Player"){
+            var player = other.gameObject.GetComponent<PlayerController>();
+            if(player.TakeDamage(baseDamage)){
+                //knockback ? 
+                //animer nå ?
+                
+           }
+        } 
+    }
+    private void Attack_OnColliderExit2D(Collider2D other){
+        if (other.gameObject.tag == "Player")
+            isInMelee = false;
+    }
+
+ }
+
+  public partial class enemyMovement { //move
+
+    private void Move_OnColliderEnter2D(Collider2D other)
+    {
+        Debug.Log("enter");
+        if (other.gameObject.tag == "Player"){
+              Debug.Log("enter if");
         
+            m_Animator.SetTrigger("walk");
+            target = other.transform;
+        }
     }
-  }
-  
-   
-  private void OnTriggerExit2D(Collider2D other){
-    if (other.gameObject.tag == "Player"){
-        m_Animator.SetTrigger("idle");
-        target = other.transform;
-        target = null;
 
+    private void Move_OnColliderStay2D(Collider2D other)
+    {
+
+        if (other.gameObject.tag == "Player"){
         
+     } 
     }
-  }
-}
+
+    private void Move_OnColliderExit2D(Collider2D other)
+    {
+        if (other.gameObject.tag == "Player"){
+            m_Animator.SetTrigger("idle");
+            target = other.transform;
+            target = null;        
+        }      
+    }
+    
+ }
+
+
diff --git a/MrBigsock/Assets/Prefabs/enemy_orc_warrior.prefab b/MrBigsock/Assets/Prefabs/enemy_orc_warrior.prefab
index 6a505c92d0018ceab09a7dae73980e548cb2767d..79bd4893f6c7c7af46705055a0e9d3aa9533b7f5 100644
--- a/MrBigsock/Assets/Prefabs/enemy_orc_warrior.prefab
+++ b/MrBigsock/Assets/Prefabs/enemy_orc_warrior.prefab
@@ -1,89 +1,5 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
---- !u!1 &1240678898127397734
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 3533211250365981028}
-  - component: {fileID: 4131390337475563008}
-  m_Layer: 0
-  m_Name: weapon_axe
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &3533211250365981028
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1240678898127397734}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0.076, y: -0.003, z: 0}
-  m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 7097463258699610772}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &4131390337475563008
-SpriteRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1240678898127397734}
-  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: 21300000, guid: 0c02c87762e26c742a94ee93f48e55c3, type: 3}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_FlipX: 0
-  m_FlipY: 0
-  m_DrawMode: 0
-  m_Size: {x: 0.09, y: 0.21}
-  m_AdaptiveModeThreshold: 0.5
-  m_SpriteTileMode: 0
-  m_WasSpriteAssigned: 0
-  m_MaskInteraction: 0
-  m_SpriteSortPoint: 0
 --- !u!1 &2996495149472241661
 GameObject:
   m_ObjectHideFlags: 0
@@ -95,9 +11,9 @@ GameObject:
   - component: {fileID: 7097463258699610772}
   - component: {fileID: 65690667081962088}
   - component: {fileID: 8506405333948921944}
-  - component: {fileID: 229287625782917783}
   - component: {fileID: 5891912875293609069}
   - component: {fileID: 1992931693109878676}
+  - component: {fileID: 2395291586284291126}
   m_Layer: 0
   m_Name: enemy_orc_warrior
   m_TagString: Untagged
@@ -117,7 +33,8 @@ Transform:
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 3533211250365981028}
+  - {fileID: 2753253562357840752}
+  - {fileID: 1701851832504875480}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -161,7 +78,7 @@ SpriteRenderer:
   m_LightmapParameters: {fileID: 0}
   m_SortingLayerID: 0
   m_SortingLayer: 0
-  m_SortingOrder: 1
+  m_SortingOrder: 2
   m_Sprite: {fileID: 21300000, guid: dfb75b4c193e2994dabfcb50c3cf64e5, type: 3}
   m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_FlipX: 0
@@ -181,11 +98,11 @@ Rigidbody2D:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2996495149472241661}
-  m_BodyType: 1
+  m_BodyType: 0
   m_Simulated: 1
-  m_UseFullKinematicContacts: 0
+  m_UseFullKinematicContacts: 1
   m_UseAutoMass: 1
-  m_Mass: 0.032
+  m_Mass: 0.6243647
   m_LinearDrag: 0
   m_AngularDrag: 0
   m_GravityScale: 0
@@ -194,22 +111,6 @@ Rigidbody2D:
   m_SleepingMode: 1
   m_CollisionDetection: 0
   m_Constraints: 4
---- !u!58 &229287625782917783
-CircleCollider2D:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2996495149472241661}
-  m_Enabled: 1
-  m_Density: 1
-  m_Material: {fileID: 0}
-  m_IsTrigger: 1
-  m_UsedByEffector: 0
-  m_UsedByComposite: 0
-  m_Offset: {x: 0, y: 0}
-  serializedVersion: 2
-  m_Radius: 1
 --- !u!95 &5891912875293609069
 Animator:
   serializedVersion: 4
@@ -243,4 +144,167 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   speed: 0.6
+  collisionOffset: 0.05
+  movementFilter:
+    useTriggers: 0
+    useLayerMask: 1
+    useDepth: 0
+    useOutsideDepth: 0
+    useNormalAngle: 0
+    useOutsideNormalAngle: 0
+    layerMask:
+      serializedVersion: 2
+      m_Bits: 0
+    minDepth: 0
+    maxDepth: 0
+    minNormalAngle: 0
+    maxNormalAngle: 0
   attackSpeed: 3
+--- !u!61 &2395291586284291126
+BoxCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2996495149472241661}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0.06446171, y: -0.1364619}
+  m_SpriteTilingProperty:
+    border: {x: 0, y: 0, z: 0, w: 0}
+    pivot: {x: 0.5, y: 0.5}
+    oldSize: {x: 1, y: 1.25}
+    newSize: {x: 0.16, y: 0.2}
+    adaptiveTilingThreshold: 0.5
+    drawMode: 0
+    adaptiveTiling: 0
+  m_AutoTiling: 0
+  serializedVersion: 2
+  m_Size: {x: 0.6390133, y: 0.9770762}
+  m_EdgeRadius: 0
+--- !u!1 &7539630614846898202
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2753253562357840752}
+  - component: {fileID: 7566484513581878393}
+  - component: {fileID: 8365831662590702362}
+  m_Layer: 3
+  m_Name: followCollider
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2753253562357840752
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7539630614846898202}
+  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: 7097463258699610772}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!58 &7566484513581878393
+CircleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7539630614846898202}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0, y: 0}
+  serializedVersion: 2
+  m_Radius: 8
+--- !u!114 &8365831662590702362
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7539630614846898202}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 71e6597ff848be34e979f08b6041384a, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &8620845285361089561
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1701851832504875480}
+  - component: {fileID: 8983526051028480608}
+  - component: {fileID: 6373942986610437007}
+  m_Layer: 3
+  m_Name: MeleeCollider
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1701851832504875480
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8620845285361089561}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.04, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7097463258699610772}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!58 &8983526051028480608
+CircleCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8620845285361089561}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_UsedByEffector: 0
+  m_UsedByComposite: 0
+  m_Offset: {x: 0, y: 0}
+  serializedVersion: 2
+  m_Radius: 0.7
+--- !u!114 &6373942986610437007
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8620845285361089561}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 71e6597ff848be34e979f08b6041384a, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: