Estou tentando programar um jogo do tipo "Pong" no Godot 3.5. Em contraste com o clássico jogo Pong, quero estabelecer a possibilidade de girar ligeiramente as barras de Pong para obter mais variedade. Depois que o jogador define alguma rotação para a barra Pong, quero corrigi-la lentamente até o ponto inicial com uma rotação de 0. De alguma forma, minha função de correção só funciona em rotações_degrees negativas ("esquerda"). Se houver rotações_graus positivos ("direita"), nenhuma correção será aplicada.
Meu código é assim. Eu já estava procurando bugs no método print. A correção da função é definir a rotação_direção para -0,2 como deveria, mas de alguma forma a rotação_direção na linha acima (veja meu comentário sobre o bug) parece manter o valor 0.
extends KinematicBody2D
var rotation_direction = 0
var max_rotation = 10
func _physics_process(delta):
if Input.is_action_pressed("right"):
rotation_direction = 0.5
if Input.is_action_pressed("left"):
rotation_direction = -0.5
rotation_degrees += rotation_direction ##possible bug?
rotation_degrees = clamp(rotation_degrees, -max_rotation, max_rotation)
correction()
func correction():
if rotation_degrees > 0:
rotation_direction = -0.2
if rotation_degrees < 0.0:
rotation_direction = 0.2
else:
rotation_direction = 0.0