from random import random from godot import exposed, export, Vector2, GDString, Area2D, Input MOTION_SPEED = 150 @exposed class Paddle(Area2D): left = export(bool, default=False) action_prefix = export(str, default="") can_move = export(bool, default=False) def _ready(self): self.motion = 0 self.can_move = True self.screen_size = self.get_viewport_rect().size self.set_process(True) def _process(self, delta): motion = 0 if Input.is_action_pressed(self.action_prefix + GDString("_move_up")): motion -= 1 elif Input.is_action_pressed(self.action_prefix + GDString("_move_down")): motion += 1 motion *= MOTION_SPEED if self.can_move: self.translate(Vector2(0, motion * delta)) # set screen limits if self.position.y < 0: self.position.y = 0 elif self.position.y > self.screen_size.y: self.position.y = self.screen_size.y def _on_paddle_area_enter(self, area): # random for new direction generated on each peer area.bounce(self.left, random())