Profile

pong-together

← Back to repositories | View on GitHub

Pong, but wireless multiplayer.

GDScript 1 0 Updated: 12/15/2025

pongbar.gd

extends Area2D

const MOVE_SPEED = 100
@export var score: int = 0
var ball = false
var _ball_dir
var _up
var _down

@onready var _screen_size_y = get_viewport_rect().size.y


func _enter_tree() -> void:
	set_multiplayer_authority(str(name).to_int())
	if name.to_int() == 1:
		position = Vector2(45, 298)
	else:
		position = Vector2(746.995, 298)


func _ready() -> void:
	if not is_multiplayer_authority(): 
		return


func _process(delta: float) -> void:
	# Update the correct label based on node name
	if name.to_int() == 1:
		get_parent().get_node("Control/Label").text = str(score)
	else:
		get_parent().get_node("Control/Label2").text = str(score)
	
	# Set ball direction based on paddle position
	if position.x == 45:  # Left paddle
		_ball_dir = 1
	else:  # Right paddle
		_ball_dir = -1
		
	if not is_multiplayer_authority(): 
		return
	
	# Simple up/down movement
	if Input.is_action_pressed("ui_up"):
		position.y -= 5
	if Input.is_action_pressed("ui_down"):
		position.y += 5
	
	# Keep paddle within screen bounds
	position.y = clamp(position.y, 16, _screen_size_y)


func _on_area_entered(area):
	if area.ball:  # Keep your check
		var hit_pos_rel = (area.position.y - position.y) / 50.0  # Adjust divisor for sensitivity
		var new_dir = Vector2(_ball_dir, clamp(hit_pos_rel, -0.9, 0.9)).normalized()
		area.direction = new_dir
		area.sound()