Better respawn and knockback

This commit is contained in:
Diego 2020-07-21 01:07:58 -05:00
parent 869ef68d12
commit c293efbc13
9 changed files with 48 additions and 18 deletions

View file

@ -6,5 +6,5 @@ func _process(delta):
if get_overlapping_bodies().size() != 0: if get_overlapping_bodies().size() != 0:
print("1") print("1")
if Input.is_action_pressed("open"): if Input.is_action_pressed("open"):
print("2") Player.current_scene = "res://levels/World.tscn"
get_tree().change_scene("res://levels/World.tscn") get_tree().change_scene("res://levels/testtscn")

View file

@ -19,7 +19,7 @@ tracks/0/keys = {
"values": [ 0, 1 ] "values": [ 0, 1 ]
} }
[sub_resource type="RectangleShape2D" id=3] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 14, 13 ) extents = Vector2( 14, 13 )
[node name="Door" type="Sprite"] [node name="Door" type="Sprite"]
@ -35,5 +35,5 @@ script = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2( 16, 19 ) position = Vector2( 16, 19 )
shape = SubResource( 3 ) shape = SubResource( 2 )
[connection signal="body_entered" from="Area2D" to="Area2D" method="_on_Area2D_body_entered"] [connection signal="body_entered" from="Area2D" to="Area2D" method="_on_Area2D_body_entered"]

View file

@ -17,7 +17,8 @@ func _ready():
func _on_TextureButton_pressed(): func _on_TextureButton_pressed():
get_tree().change_scene("res://levels/World.tscn") Player.respawn()
get_tree().change_scene(Player.current_scene)
func _on_TextureButton2_pressed(): func _on_TextureButton2_pressed():

View file

@ -21,5 +21,5 @@ func apply_gravity(delta, modifier = 1):
velocity.y += gravity * delta * modifier velocity.y += gravity * delta * modifier
func do_knockback(normal): func do_knockback(normal):
knockback = normal knockback = Vector2(4, 4)

View file

@ -37,6 +37,12 @@ func _physics_process(_delta):
$Hell.flip_h = true $Hell.flip_h = true
if health <= 0: if health <= 0:
queue_free() queue_free()
func do_knockback(normal):
if $Hell.flip_h == true:
knockback = Vector2(-4, -4)
else:
knockback = Vector2(4, 0)
func shoot_fireball(direction): func shoot_fireball(direction):
if ShootDelay.is_stopped(): if ShootDelay.is_stopped():

View file

@ -9,13 +9,14 @@ func apply_gravity(delta, modifier = 1):
velocity.y += gravity * delta * modifier velocity.y += gravity * delta * modifier
func _physics_process(_delta): func _physics_process(_delta):
var dist = global_position.distance_to(Player.position)
if knockback != Vector2.ZERO: if knockback != Vector2.ZERO:
knockback = lerp(knockback, Vector2.ZERO, 0.5) knockback = lerp(knockback, Vector2.ZERO, 0.5)
move_and_slide(-knockback * knockback_amount) move_and_slide(-knockback * knockback_amount)
if knockback.x < 1 and -1 < knockback.x and knockback.y < 1 and -1 < knockback.y: if knockback.x < 1 and -1 < knockback.x and knockback.y < 1 and -1 < knockback.y:
knockback = Vector2.ZERO knockback = Vector2.ZERO
return return
var dist = global_position.distance_to(Player.position)
if $RayCast2D.get_collider() != null && $RayCast2D.get_collider().has_method("get_type") and $RayCast2D.get_collider().get_type() == "player": if $RayCast2D.get_collider() != null && $RayCast2D.get_collider().has_method("get_type") and $RayCast2D.get_collider().get_type() == "player":
velocity = Vector2(0, 0) velocity = Vector2(0, 0)
throw_bone(Vector2.LEFT) throw_bone(Vector2.LEFT)
@ -30,13 +31,14 @@ func _physics_process(_delta):
if dist <= 400: if dist <= 400:
velocity.x = position.direction_to(Globals.player).normalized().x velocity.x = position.direction_to(Globals.player).normalized().x
else: else:
velocity = Vector2(0, 0) velocity = Vector2(0, 0)
if velocity.x > 0: if velocity.x > 0:
$Skeleton.flip_h = false $Skeleton.flip_h = false
elif velocity.x < 0: elif velocity.x < 0:
$Skeleton.flip_h = true $Skeleton.flip_h = true
# Kill # Kill
if health <= 0: if health <= 0:
queue_free() queue_free()
@ -52,4 +54,10 @@ func throw_bone(direction):
temp.global_position = ProjectileSpawn.global_position temp.global_position = ProjectileSpawn.global_position
temp.launch_vector(direction) temp.launch_vector(direction)
ShootDelay.start() ShootDelay.start()
func do_knockback(normal):
if $Skeleton.flip_h == true:
knockback = Vector2(-4, -4)
else:
knockback = Vector2(4, 0)

View file

@ -8,8 +8,10 @@ onready var Hurtbox = $Area2D
func _ready(): func _ready():
speed = 50 speed = 50
health = 3.5
func _physics_process(delta): func _physics_process(delta):
Player.current_scene = "res://levels/World.tscn"
if knockback != Vector2.ZERO: if knockback != Vector2.ZERO:
knockback = lerp(knockback, Vector2.ZERO, 0.5) knockback = lerp(knockback, Vector2.ZERO, 0.5)
move_and_slide(-knockback * knockback_amount) move_and_slide(-knockback * knockback_amount)
@ -38,3 +40,9 @@ func deal_damage():
if body.has_method("get_type") && body.get_type() == "player": if body.has_method("get_type") && body.get_type() == "player":
body.health -= contact_damage body.health -= contact_damage
DamageCD.start() DamageCD.start()
func do_knockback(normal):
if Spr.flip_h == true:
knockback = Vector2(-4, -4)
else:
knockback = Vector2(4, 0)

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=23 format=2] [gd_scene load_steps=24 format=2]
[ext_resource path="res://meta/DungeonTilemap.tscn" type="PackedScene" id=1] [ext_resource path="res://meta/DungeonTilemap.tscn" type="PackedScene" id=1]
[ext_resource path="res://Player/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Player/Player.tscn" type="PackedScene" id=2]
@ -9,11 +9,10 @@
[ext_resource path="res://art/Pedestal.png" type="Texture" id=7] [ext_resource path="res://art/Pedestal.png" type="Texture" id=7]
[ext_resource path="res://Items/ChargeWandPickup.tscn" type="PackedScene" id=8] [ext_resource path="res://Items/ChargeWandPickup.tscn" type="PackedScene" id=8]
[ext_resource path="res://art/ecoprojectile.png" type="Texture" id=9] [ext_resource path="res://art/ecoprojectile.png" type="Texture" id=9]
[ext_resource path="res://ai/Skeleton Enemy.tscn" type="PackedScene" id=11]
[ext_resource path="res://art/Mana.png" type="Texture" id=12] [ext_resource path="res://art/Mana.png" type="Texture" id=12]
[ext_resource path="res://Items/Door.tscn" type="PackedScene" id=13] [ext_resource path="res://Items/Door.tscn" type="PackedScene" id=13]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 169.977, 24.8286 ) extents = Vector2( 169.977, 24.8286 )
@ -263,7 +262,7 @@ margin_right = 1302.35
margin_bottom = 200.227 margin_bottom = 200.227
rect_scale = Vector2( 0.75, 0.75 ) rect_scale = Vector2( 0.75, 0.75 )
custom_fonts/font = SubResource( 2 ) custom_fonts/font = SubResource( 2 )
text = "Press 'E'and equip a projectile to be able to shoot" text = "Press 'E'and equip a spell to be able to shoot"
autowrap = true autowrap = true
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
@ -280,7 +279,7 @@ margin_right = 1453.41
margin_bottom = 142.983 margin_bottom = 142.983
rect_scale = Vector2( 0.5, 0.5 ) rect_scale = Vector2( 0.5, 0.5 )
custom_fonts/font = SubResource( 2 ) custom_fonts/font = SubResource( 2 )
text = "Each projectile does something different" text = "Each spell does something different"
autowrap = true autowrap = true
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
@ -289,13 +288,13 @@ __meta__ = {
[node name="sample_text4" type="Label" parent="text/Text6"] [node name="sample_text4" type="Label" parent="text/Text6"]
anchor_top = -0.000655535 anchor_top = -0.000655535
anchor_bottom = -0.000655535 anchor_bottom = -0.000655535
margin_left = 1426.25 margin_left = 1425.66
margin_top = 59.1731 margin_top = 59.1731
margin_right = 1634.25 margin_right = 1633.66
margin_bottom = 167.173 margin_bottom = 167.173
rect_scale = Vector2( 0.45, 0.45 ) rect_scale = Vector2( 0.45, 0.45 )
custom_fonts/font = SubResource( 2 ) custom_fonts/font = SubResource( 2 )
text = "This projectile takes no mana but does little damage" text = "This spell takes no mana but does little damage"
autowrap = true autowrap = true
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
@ -340,7 +339,7 @@ margin_right = 2196.39
margin_bottom = 284.74 margin_bottom = 284.74
rect_scale = Vector2( 0.45, 0.45 ) rect_scale = Vector2( 0.45, 0.45 )
custom_fonts/font = SubResource( 2 ) custom_fonts/font = SubResource( 2 )
text = "Press 'F' to open" text = "Press 'F' to open stuff"
autowrap = true autowrap = true
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
@ -458,5 +457,8 @@ texture = ExtResource( 9 )
position = Vector2( 1581.08, 38.1216 ) position = Vector2( 1581.08, 38.1216 )
scale = Vector2( 2.66787, 2.66787 ) scale = Vector2( 2.66787, 2.66787 )
texture = ExtResource( 12 ) texture = ExtResource( 12 )
[node name="Skeleton Enemy" parent="." instance=ExtResource( 11 )]
position = Vector2( 149.132, 146.16 )
[connection signal="body_entered" from="Area2D" to="Player" method="_on_Area2D_body_entered"] [connection signal="body_entered" from="Area2D" to="Player" method="_on_Area2D_body_entered"]
[connection signal="body_entered" from="Area2D" to="text/Text2" method="_on_body_entered"] [connection signal="body_entered" from="Area2D" to="text/Text2" method="_on_body_entered"]

View file

@ -161,6 +161,11 @@ inventory={
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"unicode":0,"echo":false,"script":null) "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"unicode":0,"echo":false,"script":null)
] ]
} }
open={
"deadzone": 0.5,
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":70,"unicode":0,"echo":false,"script":null)
]
}
[layer_names] [layer_names]