player hurt working with signals

This commit is contained in:
OddlyTimbot 2024-10-07 14:24:38 -04:00
parent a6fc6acc12
commit 6355c31a7c
6 changed files with 101 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b2brlauvni08o"
path="res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/graphics/player/hurt/Player Hurt 48x48.png"
dest_files=["res://.godot/imported/Player Hurt 48x48.png-a720e51cb19103e76b22ab6c1b81302d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,9 +1,10 @@
[gd_scene load_steps=39 format=3 uid="uid://dbgc24hrbtvxm"] [gd_scene load_steps=44 format=3 uid="uid://dbgc24hrbtvxm"]
[ext_resource type="Script" path="res://scripts/player.gd" id="1_5qpif"] [ext_resource type="Script" path="res://scripts/player.gd" id="1_5qpif"]
[ext_resource type="Texture2D" uid="uid://d6d3re6epsh4" path="res://assets/graphics/player/death/Player Death 64x64.png" id="2_t1yra"] [ext_resource type="Texture2D" uid="uid://d6d3re6epsh4" path="res://assets/graphics/player/death/Player Death 64x64.png" id="2_t1yra"]
[ext_resource type="Texture2D" uid="uid://pdvgf3y1lquv" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_vcmr0"] [ext_resource type="Texture2D" uid="uid://pdvgf3y1lquv" path="res://assets/graphics/player/idle/Player Idle 48x48.png" id="2_vcmr0"]
[ext_resource type="Texture2D" uid="uid://cvh48exhs1ir1" path="res://assets/graphics/player/run/player run 48x48.png" id="3_a03rx"] [ext_resource type="Texture2D" uid="uid://cvh48exhs1ir1" path="res://assets/graphics/player/run/player run 48x48.png" id="3_a03rx"]
[ext_resource type="Texture2D" uid="uid://b2brlauvni08o" path="res://assets/graphics/player/hurt/Player Hurt 48x48.png" id="3_a70o5"]
[ext_resource type="Texture2D" uid="uid://d0kfe5ms2vjbr" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_mvdmt"] [ext_resource type="Texture2D" uid="uid://d0kfe5ms2vjbr" path="res://assets/graphics/player/jump/player jump 48x48.png" id="3_mvdmt"]
[sub_resource type="AtlasTexture" id="AtlasTexture_uru55"] [sub_resource type="AtlasTexture" id="AtlasTexture_uru55"]
@ -46,6 +47,22 @@ region = Rect2(384, 0, 48, 48)
atlas = ExtResource("2_t1yra") atlas = ExtResource("2_t1yra")
region = Rect2(432, 0, 48, 48) region = Rect2(432, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_me361"]
atlas = ExtResource("3_a70o5")
region = Rect2(0, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_5yslj"]
atlas = ExtResource("3_a70o5")
region = Rect2(48, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_l8y4s"]
atlas = ExtResource("3_a70o5")
region = Rect2(96, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_vc70i"]
atlas = ExtResource("3_a70o5")
region = Rect2(144, 0, 48, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_etdvv"] [sub_resource type="AtlasTexture" id="AtlasTexture_etdvv"]
atlas = ExtResource("2_vcmr0") atlas = ExtResource("2_vcmr0")
region = Rect2(0, 0, 48, 48) region = Rect2(0, 0, 48, 48)
@ -169,6 +186,23 @@ animations = [{
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_me361")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5yslj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l8y4s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vc70i")
}],
"loop": false,
"name": &"hurt",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_etdvv") "texture": SubResource("AtlasTexture_etdvv")
}, { }, {
"duration": 1.0, "duration": 1.0,
@ -256,7 +290,7 @@ metadata/_edit_group_ = true
texture_filter = 1 texture_filter = 1
position = Vector2(0, -7) position = Vector2(0, -7)
sprite_frames = SubResource("SpriteFrames_wlxdo") sprite_frames = SubResource("SpriteFrames_wlxdo")
animation = &"death" animation = &"hurt"
autoplay = "idle" autoplay = "idle"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
@ -274,3 +308,5 @@ position = Vector2(12, -5)
[node name="MarkerLeft" type="Node2D" parent="."] [node name="MarkerLeft" type="Node2D" parent="."]
position = Vector2(-15, -5) position = Vector2(-15, -5)
[connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"]

View File

@ -4,6 +4,7 @@ var coinsCollected:int = 0
var player:Resource var player:Resource
signal playerDeath signal playerDeath
signal playerHurt
func _ready() -> void: func _ready() -> void:
print("Game controller is ready") print("Game controller is ready")
@ -25,4 +26,6 @@ func playerDamage():
if player.health <= 0: if player.health <= 0:
#kill him #kill him
playerDeath.emit() playerDeath.emit()
else:
playerHurt.emit()

View File

@ -8,6 +8,8 @@ const PUSH_FORCE = 700
var faceLeft = false var faceLeft = false
var living = true var living = true
signal playerDead
# can i push right or left # can i push right or left
var pushLeftEnabled = false var pushLeftEnabled = false
var pushRightEnabled = false var pushRightEnabled = false
@ -18,18 +20,24 @@ var pushRightEnabled = false
@onready var playerSprite: AnimatedSprite2D = $AnimatedSprite2D @onready var playerSprite: AnimatedSprite2D = $AnimatedSprite2D
var pushTarget var pushTarget
var animPlaying = "idle"
var bullet = preload("res://scenes/bullet.tscn") var bullet = preload("res://scenes/bullet.tscn")
func killPlayer(): func killPlayer():
print("kill the player")
if living: if living:
living = false living = false
animPlaying = "death"
#play death animation #play death animation
playerSprite.play("death") playerSprite.play("death")
func hurtPlayer():
animPlaying="hurt"
print("player should get hurt")
playerSprite.play("hurt")
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if living: if living and not animPlaying=="hurt":
# Add the gravity. # Add the gravity.
if not is_on_floor(): if not is_on_floor():
velocity += get_gravity() * delta velocity += get_gravity() * delta
@ -102,3 +110,11 @@ func _physics_process(delta: float) -> void:
pushTarget = collider pushTarget = collider
else: else:
pushRightEnabled = false pushRightEnabled = false
func _on_animation_finished() -> void:
print(animPlaying + " finished playing.")
if animPlaying == "hurt":
animPlaying="idle"
if animPlaying=="death":
playerDead.emit()

View File

@ -28,6 +28,8 @@ func _ready() -> void:
n.playerDamage.connect(GameController.playerDamage) n.playerDamage.connect(GameController.playerDamage)
#GameController signals #GameController signals
GameController.playerDeath.connect(killPlayer) GameController.playerDeath.connect(killPlayer)
GameController.playerHurt.connect(hurtPlayer)
player.playerDead.connect(deadPlayer)
func boxTrap(): func boxTrap():
print("Trigger a box trap!") print("Trigger a box trap!")
@ -66,11 +68,13 @@ func crateFactory():
func killPlayer(): func killPlayer():
# tell player to die - starts death animation # tell player to die - starts death animation
player.killPlayer() player.killPlayer()
if timer.is_stopped(): func hurtPlayer():
timer.start(4) player.hurtPlayer()
func deadPlayer():
if timer.is_stopped():
timer.start(1)
func resetWorld(): func resetWorld():
print("screne manager resetting world")
GameController.resetPlayer() GameController.resetPlayer()
get_tree().reload_current_scene() get_tree().reload_current_scene()