| 1234567891011121314151617181920212223242526272829 |
- extends Enemy
- var falling := true
- var target_player: Player = null
- var can_rise := true
- func _physics_process(delta: float) -> void:
- target_player = get_tree().get_first_node_in_group("Players")
- if falling:
- global_position.y += 32 * delta
- if global_position.y >= target_player.global_position.y - 24 and can_rise:
- rise_tween()
- $Sprite.play("Fall")
- else:
- $Sprite.play("Rise")
- func rise_tween() -> void:
- falling = false
- can_rise = false
- var tween = create_tween().set_trans(Tween.TRANS_CUBIC)
- var dir = sign(target_player.global_position.x - global_position.x)
- var target_position := Vector2(32 * dir, -32)
- var final_position = global_position + target_position
- final_position.y = clamp(final_position.y, -176, 64)
- tween.tween_property(self, "global_position", final_position, 0.75)
- await tween.finished
- falling = true
- await get_tree().create_timer(0.25, false).timeout
- can_rise = true
|