Files
idlebreakout/balls/ball.gd
T

34 lines
859 B
GDScript

extends CharacterBody2D
@export var speed: float = 5
@export var strength: int = 1
const _speed_mult: float = 5000
var _direction: Vector2
var _velocity: Vector2
var deg: float
func _ready():
_direction = Vector2.UP.rotated(deg_to_rad(randf_range(0.0, 360.0)))
func _physics_process(delta):
_velocity.x = speed * _speed_mult * _direction.x * delta
_velocity.y = speed * _speed_mult * _direction.y * delta
var collide = move_and_collide(_velocity * delta)
if collide:
deg = rad_to_deg(collide.get_angle())
if (deg >= 45 and deg < 135) or (deg >= 225 and deg < 315):
_invert_x()
if (deg >= 135 and deg < 225) or deg < 45 or deg >= 315:
_invert_y()
if collide.get_collider().get_parent() is Block:
collide.get_collider().get_parent().take_damage(strength)
func _invert_x():
_direction.x *= -1
func _invert_y():
_direction.y *= -1