diff --git a/script/Skeleton Enemy.gd b/script/Skeleton Enemy.gd index af6fd1a..43cc764 100644 --- a/script/Skeleton Enemy.gd +++ b/script/Skeleton Enemy.gd @@ -10,60 +10,46 @@ func apply_gravity(delta, modifier = 1): func _physics_process(_delta): var dist = global_position.distance_to(Globals.player) - if Globals.player != null: - if $RayCast2D.get_collider() != null && $RayCast2D.get_collider().has_method("get_type") and $RayCast2D.get_collider().get_type() == "player": - velocity = Vector2(0, 0) - if ShootDelay.is_stopped(): - var temp = Spinning_Bone.instance() - get_tree().current_scene.add_child(temp) - temp.global_position = ProjectileSpawn.global_position - temp.launch_left() - ShootDelay.start() - elif $RayCast2D2.get_collider() != null && $RayCast2D2.get_collider().has_method("get_type") and $RayCast2D2.get_collider().get_type() == "player": - velocity = Vector2(0, 0) - if ShootDelay.is_stopped(): - var temp = Spinning_Bone.instance() - get_tree().current_scene.add_child(temp) - temp.global_position = ProjectileSpawn.global_position - temp.launch_right() - ShootDelay.start() - elif $RayCast2D3.get_collider() != null && $RayCast2D3.get_collider().has_method("get_type") and $RayCast2D3.get_collider().get_type() == "player": - velocity = Vector2(0, 0) - if ShootDelay.is_stopped(): - var temp = Spinning_Bone.instance() - get_tree().current_scene.add_child(temp) - temp.global_position = ProjectileSpawn.global_position - temp.launch_upleft() - ShootDelay.start() - elif $RayCast2D4.get_collider() != null && $RayCast2D4.get_collider().has_method("get_type") and $RayCast2D4.get_collider().get_type() == "player": - velocity = Vector2(0, 0) - if ShootDelay.is_stopped(): - var temp = Spinning_Bone.instance() - get_tree().current_scene.add_child(temp) - temp.global_position = ProjectileSpawn.global_position - temp.launch_upright() - ShootDelay.start() - else: - apply_gravity(_delta) - velocity.x *= speed - velocity = move_and_slide(velocity, UP) - if dist <= 400: - velocity.x = position.direction_to(Globals.player).normalized().x - else: + if $RayCast2D.get_collider() != null && $RayCast2D.get_collider().has_method("get_type") and $RayCast2D.get_collider().get_type() == "player": + velocity = Vector2(0, 0) + throw_bone(Vector2.LEFT) + elif $RayCast2D2.get_collider() != null && $RayCast2D2.get_collider().has_method("get_type") and $RayCast2D2.get_collider().get_type() == "player": + velocity = Vector2(0, 0) + throw_bone(Vector2.RIGHT) + elif $RayCast2D3.get_collider() != null && $RayCast2D3.get_collider().has_method("get_type") and $RayCast2D3.get_collider().get_type() == "player": + velocity = Vector2(0, 0) + throw_bone(Vector2.UP + Vector2.LEFT) + elif $RayCast2D4.get_collider() != null && $RayCast2D4.get_collider().has_method("get_type") and $RayCast2D4.get_collider().get_type() == "player": + velocity = Vector2(0, 0) + throw_bone(Vector2.UP + Vector2.RIGHT) + else: + apply_gravity(_delta) + velocity.x *= speed + velocity = move_and_slide(velocity, UP) + + if dist <= 400: + velocity.x = position.direction_to(Globals.player).normalized().x + else: velocity = Vector2(0, 0) + if velocity.x > 0: $Skeleton.flip_h = false elif velocity.x < 0: $Skeleton.flip_h = true + # Kill if health <= 0: queue_free() + # Jump if is_on_wall() and is_on_floor(): velocity.y = -150 -func on_impact(collision): - if collision.collider.has_method("get_type"): - collision.collider.set_health(collision.collider.get_health() - 1) - if health == 0: - queue_free() +func throw_bone(direction): + if ShootDelay.is_stopped(): + var temp = Spinning_Bone.instance() + get_tree().current_scene.add_child(temp) + temp.global_position = ProjectileSpawn.global_position + temp.launch_vector(direction) + ShootDelay.start() +