Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Como hemos comentado al inicio, las raquetas se deben mover hacia arriba y hacia
abajo con el teclado, mientras que la bola se moverá en todas direcciones y sentidos y
en función del lugar en el que rebote.
Unity provee una serie de comandos de entrada básicos, que puedes consultar
haciendo clic en Edit > Project Settings > Input:
Por defecto, viendo el Vertical Axis vemos que podemos movernos arriba y abajo. con
las flechas up/down o con W/S.
Como necesitamos dos jugadores, vamos a realizar unos cambios de modo que
podamos utilizar S/W para uno y Up/Down para el otro:
El script
Para configurar el movimiento de las raquetas, lo primero que necesitamos es crear,
dentro de la carpeta Scripts, un New > C# Script con el nombre Raqueta:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
}
}
Como sabes, por defecto se crean los métodos Start(), que se ejecuta
automáticamente al inicio, y Update(), que se ejecuta cada frame (a un ritmo de 60fps).
Ninguno de ellos devuelve valor alguno (void).
El movimiento de la raqueta será solo arriba y abajo, y la siguiente imagen nos permite
identificar que parámetros tenemos que modificar:
Fuente: https://noobtuts.com/unity/2d-pong-game
Esto es, utilizaremos un Vector2 (un elemento con componentes x e y) en el que x
siempre será 0 mientras que y valdrá 0 si está quieta, 1 si se mueve hacia arriba y -1 si
se mueve hacia abajo.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Velocidad
public float velocidad= 30.0f;
}
}
Como puedes ver en el código anterior, utilizamos variables privadas (el estándar es
que sus nombres empiecen por un guión bajo) con la etiqueta [SerializeField] para
poder acceder a ellas desde la Inspector window y modificarlas. El uso de variables y
métodos privados siempre que sea posible hará que nuestro juego sea más seguro
frente a posibles hackeos.
Por último, para que el comportamiento del script funcione, debemos asociar el script a
las raquetas arrastrándolo a cada uno de ellas.
El problema es que las dos raquetas se mueven a la vez y solo funciona uno de los
controles. Esto es debido a que hemos detectado solo el eje Vertical (y no el Vertical 2)
y además no identificamos qué raqueta debemos mover.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Velocidad
public float velocidad = 30.0f;
//Eje vertical
public string eje;
}
}
Para terminar:
Ahora ye deberías tener las dos raquetas funcionando cada una con sus controles.