No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Conectando todos los nodos

13/17
Recursos

Aportes 9

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Avanzando.

Si se dan cuenta hay un pequeño bug cada vez que entra en la porteria del contrario va desapareciendo en x

En mi caso estoy usando Godot 4. Para hacer el juego mas adaptable y a futuro no tener que poner todo manualmente me parece mas practico tomar los valores de las posiciones directamente de las medidas del viewport. Asi si cambia el tamaño de la ventana los centros estan siempre bien ubicados. ```js extends Node2D func _restart_game(): $Ball.is_moving = false $Ball.velocity = Vector2.ZERO $Ball.position = Vector2 (get_viewport_rect().get_center()) $Ball.reset_ball() $player1.position.y = get_viewport_rect().size.y /2 $player2.position.y = get_viewport_rect().size.y /2 func _on_area_2d_body_entered(body: Node2D) -> void: _restart_game() func _on_area_2d_2_body_entered(body: Node2D) -> void: _restart_game() ```extends Node2D func \_restart\_game(): $Ball.is\_moving = false $Ball.velocity = Vector2.ZERO $Ball.position = Vector2 (get\_viewport\_rect().get\_center()) $Ball.reset\_ball() $player1.position.y = get\_viewport\_rect().size.y /2 $player2.position.y = get\_viewport\_rect().size.y /2 func \_on\_area\_2d\_body\_entered(body: Node2D) -> void: \_restart\_game() func \_on\_area\_2d\_2\_body\_entered(body: Node2D) -> void: \_restart\_game()

Reset de Jalabola!
Vamos! Ya casi terminando!

Para el que tenga el bug de que si la pelota colisiona por arriba o por abajo del jugador o del oponente el nodo se mueva en x por que la pelota lo este moviendo aquí esta la solución a su problema.

  • Primero vas a declarar una variable
var fixedx
  • Luego en ready le asignaras un valor a tu variable que sera la posicion en x de tu nodo2D
func _ready():
	fixedx = position.x
  • Y por ultimo en la funcion _process() o _physics_process() le asignaras la posicion en x la variable que creaste con anterioridad.
position.x = fixedx

Me paso algo peculiar, creo que es un bug, pero no se si sea la versión de Godot, estoy usando la beta 4, y pasa cuando la bola colisiona en las esquinas de las “paletas”, ya sea del player o la cpu, en la de “paleta” de la cpu la hace moverse en el eje x, en la del player hay veces que la captura y la “paleta” queda enlazada a la bola jajaja

aqui va mi codigo y me funciono de maravilla 😃

Si le cambian el nombre a la función que se crea al conectar la señal de los arcos, háganlo también en el nombre de la función que aparece debajo de la propia señal

Genial esta parte, gracias a algunos aportes he implementado la idea de resetear la position horizontal de los jugadores y de generar la pelota siempre en el centro horizontal pero a cualquier altura, eso se logra con la introduciendo este código en la función _restart_game():

//Para resetear posición horizontal
$Oponente.position = Vector2(1870, $Oponente.position.y)
$Player.position= Vector2(50,$Player.position.y)

//Para crear altura aleatoria a la pelota
randomize()
var altura = randi()%1080 //el-1080-marca-el-limite-maximo
$Ball.position = Vector2(960,altura)

Por otro lado, aún me queda corregir el error que da la pelota cuando choca en una de las esquinas del enemigo o jugador, pues lo termina empujando un poquito.