Ping-Pong/scripts/ball.gd

33 lines
945 B
GDScript3
Raw Normal View History

2026-07-01 23:25:37 +02:00
extends CharacterBody2D
@export var START_SPEED = 300.0
@export var SPEED_INCREMENT = 20.0
var current_speed = START_SPEED
var direction = Vector2.ZERO
func _ready() -> void:
reset_ball()
func _physics_process(delta: float) -> void:
# Bewegt den Ball und handhabt die Kollisionen mit den Schlägern
var collision = move_and_collide(direction * current_speed * delta)
if collision:
direction = direction.bounce(collision.get_normal())
current_speed += SPEED_INCREMENT
# Abprallen an den horizontalen Rändern (oben und unten)
if global_position.y < 0 or global_position.y > 648:
direction.y *= -1
func reset_ball() -> void:
# Startet exakt in der Mitte des 1152x648 Bildschirms
global_position = Vector2(576, 324)
current_speed = START_SPEED
# Zufällige Richtung nach links oder rechts starten
var x_dir = 1 if randf() > 0.5 else -1
var y_dir = randf_range(-0.5, 0.5)
direction = Vector2(x_dir, y_dir).normalized()