| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- extends Node2D
- var velocity := 5.0
- var play_sfx := false
- @onready var starting_y := global_position.y
- @export_range(0, 3) var jump_delay := 1
- var can_jump := true
- signal killed
- const BASE_LINE := 48
- func _ready() -> void:
- if Global.current_game_mode != Global.GameMode.LEVEL_EDITOR and global_position.y > -32:
- Global.log_warning("Podoboo is too low! Forgot to update!")
- func _physics_process(delta: float) -> void:
- velocity += (5 / delta) * delta
- velocity = clamp(velocity, -INF, 280)
- global_position.y += velocity * delta
- global_position.y = clamp(global_position.y, -INF, BASE_LINE)
- if global_position.y >= BASE_LINE and can_jump:
- can_jump = false
- do_jump()
-
- $Sprite.flip_v = velocity > 0
- func do_jump() -> void:
- if jump_delay > 0:
- $Timer.start(jump_delay)
- await $Timer.timeout
- if play_sfx:
- AudioManager.play_sfx("podoboo", global_position)
- velocity = calculate_jump_height()
- print(velocity)
- await get_tree().physics_frame
- can_jump = true
- func damage_player(player: Player) -> void:
- player.damage()
- func calculate_jump_height() -> float:
- global_position.y = BASE_LINE
- return -sqrt(2 * 5 * abs(starting_y - (global_position.y))) * 8
-
- const SMOKE_PARTICLE = preload("uid://d08nv4qtfouv1")
- func flag_die() -> void:
- die()
- func die() -> void:
- killed.emit()
- queue_free()
|