Blooper.gd 913 B

1234567891011121314151617181920212223242526272829
  1. extends Enemy
  2. var falling := true
  3. var target_player: Player = null
  4. var can_rise := true
  5. func _physics_process(delta: float) -> void:
  6. target_player = get_tree().get_first_node_in_group("Players")
  7. if falling:
  8. global_position.y += 32 * delta
  9. if global_position.y >= target_player.global_position.y - 24 and can_rise:
  10. rise_tween()
  11. $Sprite.play("Fall")
  12. else:
  13. $Sprite.play("Rise")
  14. func rise_tween() -> void:
  15. falling = false
  16. can_rise = false
  17. var tween = create_tween().set_trans(Tween.TRANS_CUBIC)
  18. var dir = sign(target_player.global_position.x - global_position.x)
  19. var target_position := Vector2(32 * dir, -32)
  20. var final_position = global_position + target_position
  21. final_position.y = clamp(final_position.y, -176, 64)
  22. tween.tween_property(self, "global_position", final_position, 0.75)
  23. await tween.finished
  24. falling = true
  25. await get_tree().create_timer(0.25, false).timeout
  26. can_rise = true