diff --git a/src/actors/player/Player.gd b/src/actors/player/Player.gd
index 52706b483367651ac3403d3a9f2a7470016f0460..91a75c97fe9c62ed75258e4e3e0e2324ea9fbc6d 100644
--- a/src/actors/player/Player.gd
+++ b/src/actors/player/Player.gd
@@ -63,9 +63,15 @@ func _ready():
 	hitpoints = 10
 	is_alive = true
 	
+	$Control/HealthBar.max_value = hitpoints
+	$Control/HealthBar.value = hitpoints
+	$Control/HealthBar.tint_progress = Color.green
 	$MeleeDetector.monitoring = false
 	
+	
 	print("ready")
+	set_black_white(false)
+
 
 func _process(delta):
 	if not is_alive:
@@ -205,7 +211,7 @@ func attack_process():
 		if attack_state == ATTACK_STATES.RANGED:
 			var b = FireBall.instance()
 			b.position = self.position
-			b.direction = self.last_look_direction
+			b.set_direction(self.last_look_direction) 
 			get_tree().current_scene.add_child(b)
 		if attack_state == ATTACK_STATES.MELEE:
 			print("melee")
@@ -228,13 +234,20 @@ func take_damage(n : int):
 	
 	animation_state = ANIMATION_STATES.HURT
 	hitpoints -= n
+	if hitpoints >= 7:
+		$Control/HealthBar.tint_progress = Color.green
+	elif hitpoints >= 3:
+		$Control/HealthBar.tint_progress = Color.orange
+	else:
+		$Control/HealthBar.tint_progress = Color.red
+	$Control/HealthBar.value = hitpoints
+	
 	if hitpoints <= 0:
 		print("dying")
 		animation_state = ANIMATION_STATES.DEATH
 		is_alive = false
 		update_animation()
 
-
 func take_damage_player(n : int):
 	take_damage(n)
 
@@ -268,9 +281,13 @@ func update_animation():
 		$AnimatedSprite.offset.x = 0
 		$MeleeDetector/CollisionShape2D.position.x = abs($MeleeDetector/CollisionShape2D.position.x)
 	
-	$Camera2D/InfoLabel.text = "is_moving: " + str(is_moving) + "\nis_jumping: " + str(is_jumping) + "\nis_attacking: " + str(is_attacking) + "\nvh: " + str(velocity.x) + "\nvv" + str(velocity.y) + "\nhp: " + str(hitpoints)
+	$InfoLabel.text = "is_moving: " + str(is_moving) + "\nis_jumping: " + str(is_jumping) + "\nis_attacking: " + str(is_attacking) + "\nvh: " + str(velocity.x) + "\nvv" + str(velocity.y) + "\nhp: " + str(hitpoints)
 	
-
+func set_black_white(boolean: bool):
+	if boolean:
+		$AnimatedSprite.material = load("res://src/actors/player/PlayerShader.tres")
+	else:
+		$AnimatedSprite.material = null
 
 """ SECTION SIGNAL FUNCTIONS """
 
@@ -309,3 +326,4 @@ func _on_StompDetector_body_entered(body):
 func _on_MeleeDetector_body_entered(body):
 	if body.is_in_group("enemy"):
 		body.take_damage(5)
+
diff --git a/src/actors/player/Player.tscn b/src/actors/player/Player.tscn
index 6f5a805a15dde0b679fee1277115fd774a508783..3bb2911e2fde883ac1a250a07b75e2936b12beac 100755
--- a/src/actors/player/Player.tscn
+++ b/src/actors/player/Player.tscn
@@ -1,11 +1,17 @@
-[gd_scene load_steps=35 format=2]
+[gd_scene load_steps=56 format=2]
 
+[ext_resource path="res://src/assets/actors/Player/player_attack_melee.png" type="Texture" id=1]
 [ext_resource path="res://src/actors/player/Player.gd" type="Script" id=2]
 [ext_resource path="res://src/assets/actors/Player/player_run.png" type="Texture" id=3]
 [ext_resource path="res://src/assets/actors/Player/player_idle.png" type="Texture" id=4]
 [ext_resource path="res://src/assets/actors/Player/player_jump.png" type="Texture" id=5]
 [ext_resource path="res://src/assets/actors/Player/player_attack3.png" type="Texture" id=6]
 [ext_resource path="res://src/assets/actors/Player/player_hurt.png" type="Texture" id=7]
+[ext_resource path="res://src/assets/actors/Player/player_death.png" type="Texture" id=8]
+[ext_resource path="res://src/assets/actors/Player/health-bar-under.png" type="Texture" id=9]
+[ext_resource path="res://src/assets/actors/Player/health-bar-over.png" type="Texture" id=10]
+[ext_resource path="res://src/assets/actors/Player/health_bar_health.png" type="Texture" id=11]
+[ext_resource path="res://src/actors/player/PlayerShader.tres" type="Material" id=12]
 
 [sub_resource type="AtlasTexture" id=1]
 flags = 4
@@ -27,6 +33,26 @@ flags = 4
 atlas = ExtResource( 4 )
 region = Rect2( 144, 0, 48, 48 )
 
+[sub_resource type="AtlasTexture" id=13]
+flags = 4
+atlas = ExtResource( 5 )
+region = Rect2( 0, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=14]
+flags = 4
+atlas = ExtResource( 5 )
+region = Rect2( 48, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=15]
+flags = 4
+atlas = ExtResource( 5 )
+region = Rect2( 96, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=16]
+flags = 4
+atlas = ExtResource( 5 )
+region = Rect2( 144, 0, 48, 48 )
+
 [sub_resource type="AtlasTexture" id=23]
 flags = 4
 atlas = ExtResource( 3 )
@@ -97,31 +123,86 @@ flags = 4
 atlas = ExtResource( 6 )
 region = Rect2( 336, 0, 48, 48 )
 
-[sub_resource type="AtlasTexture" id=13]
+[sub_resource type="AtlasTexture" id=17]
 flags = 4
-atlas = ExtResource( 5 )
+atlas = ExtResource( 8 )
 region = Rect2( 0, 0, 48, 48 )
 
-[sub_resource type="AtlasTexture" id=14]
+[sub_resource type="AtlasTexture" id=18]
 flags = 4
-atlas = ExtResource( 5 )
+atlas = ExtResource( 8 )
 region = Rect2( 48, 0, 48, 48 )
 
-[sub_resource type="AtlasTexture" id=15]
+[sub_resource type="AtlasTexture" id=19]
 flags = 4
-atlas = ExtResource( 5 )
+atlas = ExtResource( 8 )
 region = Rect2( 96, 0, 48, 48 )
 
-[sub_resource type="AtlasTexture" id=16]
+[sub_resource type="AtlasTexture" id=20]
 flags = 4
-atlas = ExtResource( 5 )
+atlas = ExtResource( 8 )
 region = Rect2( 144, 0, 48, 48 )
 
+[sub_resource type="AtlasTexture" id=21]
+flags = 4
+atlas = ExtResource( 8 )
+region = Rect2( 192, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=22]
+flags = 4
+atlas = ExtResource( 8 )
+region = Rect2( 240, 0, 48, 48 )
+
 [sub_resource type="AtlasTexture" id=29]
 flags = 4
 atlas = ExtResource( 7 )
 region = Rect2( 48, 0, 48, 48 )
 
+[sub_resource type="AtlasTexture" id=42]
+flags = 4
+atlas = ExtResource( 7 )
+region = Rect2( 0, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=43]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 0, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=44]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 48, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=45]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 96, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=46]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 144, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=47]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 192, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=48]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 240, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=49]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 288, 0, 48, 48 )
+
+[sub_resource type="AtlasTexture" id=50]
+flags = 4
+atlas = ExtResource( 1 )
+region = Rect2( 336, 0, 48, 48 )
+
 [sub_resource type="SpriteFrames" id=38]
 animations = [ {
 "frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ) ],
@@ -129,6 +210,11 @@ animations = [ {
 "name": "idle",
 "speed": 5.0
 }, {
+"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ],
+"loop": true,
+"name": "jump",
+"speed": 2.0
+}, {
 "frames": [ SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ) ],
 "loop": true,
 "name": "move",
@@ -139,15 +225,20 @@ animations = [ {
 "name": "attack1",
 "speed": 20.0
 }, {
-"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ],
-"loop": true,
-"name": "jump",
-"speed": 2.0
+"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 22 ), SubResource( 22 ), SubResource( 22 ), SubResource( 22 ), SubResource( 22 ) ],
+"loop": false,
+"name": "death",
+"speed": 7.0
 }, {
-"frames": [ SubResource( 29 ) ],
+"frames": [ SubResource( 29 ), SubResource( 42 ), SubResource( 29 ), SubResource( 42 ), SubResource( 29 ), SubResource( 29 ), SubResource( 42 ) ],
 "loop": true,
 "name": "hurt",
 "speed": 5.0
+}, {
+"frames": [ SubResource( 43 ), SubResource( 44 ), SubResource( 45 ), SubResource( 46 ), SubResource( 47 ), SubResource( 48 ), SubResource( 49 ), SubResource( 50 ) ],
+"loop": true,
+"name": "melee",
+"speed": 17.0
 } ]
 
 [sub_resource type="RectangleShape2D" id=39]
@@ -165,19 +256,18 @@ extents = Vector2( 12.751, 6.23259 )
 [node name="Player" type="KinematicBody2D" groups=["player"]]
 collision_layer = 3
 collision_mask = 249
-collision/safe_margin = 0.5
+collision/safe_margin = 0.01
 script = ExtResource( 2 )
-velocity_cap_v = 800
 
 [node name="AnimatedSprite" type="AnimatedSprite" parent="."]
+material = ExtResource( 12 )
 position = Vector2( 10, -24 )
 frames = SubResource( 38 )
-animation = "attack1"
-frame = 7
+animation = "melee"
+frame = 5
 playing = true
 
 [node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2( 0, 50 )
 offset = Vector2( 0, -75 )
 current = true
 zoom = Vector2( 0.9, 0.9 )
@@ -187,12 +277,13 @@ drag_margin_v_enabled = true
 smoothing_enabled = true
 smoothing_speed = 10.0
 
-[node name="InfoLabel" type="Label" parent="Camera2D"]
-visible = false
+[node name="InfoLabel" type="Label" parent="."]
 margin_left = -18.3265
 margin_top = -144.037
 margin_right = 21.6735
-margin_bottom = -130.037
+margin_bottom = -113.037
+text = "test
+"
 __meta__ = {
 "_edit_use_anchors_": false
 }
@@ -223,6 +314,30 @@ shape = SubResource( 41 )
 position = Vector2( 22.3487, -20.622 )
 shape = SubResource( 51 )
 
+[node name="CanvasLayer" type="CanvasLayer" parent="."]
+
+[node name="Control" type="Control" parent="."]
+margin_left = -24.5817
+margin_top = -103.502
+margin_right = 15.4183
+margin_bottom = -63.502
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="HealthBar" type="TextureProgress" parent="Control"]
+margin_left = -4.83041
+margin_top = 40.0753
+margin_right = 54.1696
+margin_bottom = 49.0753
+max_value = 10.0
+texture_under = ExtResource( 9 )
+texture_over = ExtResource( 10 )
+texture_progress = ExtResource( 11 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
 [connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_AnimatedSprite_animation_finished"]
 [connection signal="area_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_area_entered"]
 [connection signal="body_entered" from="EnemyDetector" to="." method="_on_EnemyDetector_body_entered"]