Crear un simple juego clicker desde cero

En los últimos años, los juegos de un género como "clickers" están ganando gran popularidad. Yo mismo estoy muy interesado en jugarlos, pero no es menos interesante crear un juego: un clicker. Gracias a un motor como Unity, crear una obra maestra no será difícil incluso para un principiante simple. Vayamos a los negocios.

¿Qué hay que hacer?


  1. ¿Piensa en por qué y en qué deberíamos hacer clic?
  2. ¿Qué debería pasar cuando hacemos clic?
  3. ¿Qué debería pasar si no hacemos clic?

Cuando respondí estas preguntas:

  1. Debemos hacer clic en cualquier lugar de la pantalla.
  2. Cuando se hace clic, el objeto debe cambiar.
  3. Si se ignora, una pérdida.

¿De qué se tratará el juego?


El jugador debe elegir la espada o el escudo a tiempo, dependiendo de lo que caerá desde arriba. Es decir, la espada cae - seleccionamos la espada, el escudo cae - seleccionamos el escudo. Con la elección equivocada, el jugador simplemente perderá. En palabras, todo es bastante simple, pero en la implementación es aún más simple.

¿Dónde consigo un principiante para tomar un hermoso sprite y fondo? Respuesta: dibujate a ti mismo.

No hay nada complicado, ya que dibujamos en Adobe Illustrator. Incluso si no tiene experiencia en el dibujo, nuevamente no estamos molestos, ya que le mostraré todo en detalle.

Que necesitamos

  1. La espada
  2. Escudo
  3. Antecedentes
  4. Rama con hojas

Eso es suficiente

La técnica es simple y la mostraré con el ejemplo de una espada:

  1. Dibujar un contorno
  2. Llenar de flores
  3. Dibujar las sombras



Y eso es todo, nuestra espada está lista!

También lo hacemos con otros. No se alarme si al principio una de sus creaciones le parecerá lejos de ser ideal, porque juntas se verán como una pintura de Van Gogh. Un chiste O tal vez no.







El fondo será aún más complicado.

Dibuja un rectángulo verde y usa un degradado. Se ve así:



Podemos decir que las lecciones de arte han terminado y finalmente vamos a Unity.

En primer lugar, arrojemos nuestros sprites y arrastremos la espada y el escudo a la ventana de la jerarquía, ya que tendremos que crear prefabricados a partir de ellos y no solo.



  1. Agregue Rigidbody 2D y establezca el valor en "0" en el campo Escala de gravedad para que el escudo se coloque en un lugar.
  2. Agregue Circle Collider 2D y marque la casilla de verificación Is Trigger para rastrear acciones.

Con el prefabricado las mismas acciones, solo necesita establecer el valor "1" en el campo Escala de gravedad para que el escudo se caiga. Y arrástrelo a la carpeta Prefabs. Con la espada la misma acción. Hecho

A continuación, decora el juego con sprites dibujados anteriormente. Lo primero que lanzamos es el fondo.

  1. Coloque ramas en la parte superior
  2. Agregue un registro a continuación
  3. Coloca un puente en el medio



El secreto principal del diseño es este: colocaremos ramas en la parte superior e inferior, y en la escalera reduciremos el valor de transparencia. ¿Por qué hacer esto?

El hecho es que de esta manera creamos una cierta ilusión de espacio. Al jugador le parecerá que hay un objeto frontal, uno posterior y un horizonte. ¡Y esto es asombroso!

Ahora cree un botón que ocupará toda la pantalla. Para crear un botón en la jerarquía, haga clic en UI -> Botón. Siguiente:

  1. Haga clic en color.
  2. Establecemos el valor "0" en el campo A, que es responsable de la transparencia de nuestro botón.
  3. Nos aseguramos de que el botón se haya convertido en lo que queríamos.



Del mismo modo, creamos un texto para mostrar nuestra puntuación y registro actuales.

Y finalmente, llegamos a la programación.

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class MainScript : MonoBehaviour { public GameObject[] prefabs; //  public GameObject[] players; //  public static int score,record,n,k = 0; //, , "n,k" -  public Text scoreT; //   void Start() { score = 0; Time.timeScale = 1; StartCoroutine (PrefabsCreate ()); scoreT = scoreT.GetComponent<Text> (); record = PlayerPrefs.GetInt ("Record"); } void Update() { n = Random.Range (0, prefabs.Length); //    // 0  -  scoreT.text = score + "/" + record; //     if (score >= record) { record = score; PlayerPrefs.SetInt ("Record", record); //   } } IEnumerator PrefabsCreate(){ //    while (true) { Instantiate (prefabs [n], new Vector2 (0, 6.5f), Quaternion.identity); yield return new WaitForSeconds (0.5f); } } public void BtnClick(string btn){ //    if(btn == "Click"){ Time.timeScale = 1; players [k].SetActive (false); //   (, ...) k++; if (k >= prefabs.Length) { k = 0; //  ,  k  -  } players [k].SetActive (true); //   (, ...) } } } 

Segundo guion:

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerScript : MonoBehaviour { void OnTriggerEnter2D(Collider2D other){//   (, ) //     if (other.gameObject.tag != gameObject.tag) { Time.timeScale = 0; MainScript.score = 0; } else { MainScript.score++; Destroy (other.gameObject);//   } } } 

¿Qué está pasando en estos métodos?

Inicio (). Comienza cada vez que comenzamos el juego o reiniciamos la escena. Todo lo que está escrito dentro de este método se realiza solo una vez. Por lo tanto, escribimos allí: una cuenta igual a cero, el lanzamiento de una rutina (que es responsable de crear prefabricados), el valor del tiempo.

Actualización (). Ejecutar una vez por cuadro. Es conveniente escribir aquí que se actualiza constantemente. En nuestro caso: un indicador de puntaje y registro, un valor aleatorio n del cual depende de lo que se crea: una espada o un escudo.

BtnHaga clic en (). Puede preguntar por qué este método es "público"? Necesitamos que se refleje en la propia Unidad y podemos deletrear la palabra "Hacer clic" para rastrear en qué botón hacemos clic, aunque solo hay un botón, no le hará daño a nadie saber un poco más.



Aquí escribimos lo que debería pasar después de hacer clic en el botón. Cuando se presiona, debe cambiar de espada a escudo y viceversa, establecer el valor de tiempo en "1", ya que al perderlo se restablece a cero.

OnTriggerEnter2D (). Comprueba la colisión de un objeto. Si las etiquetas de ambos objetos coinciden, la puntuación aumenta en uno y se destruye el prefabricado. Si las etiquetas son diferentes, se detiene el tiempo perdido y se restablece la puntuación.

Queda por agregar estas mismas etiquetas. Y aquí es muy simple:

  1. En la ventana del Inspector, haga clic en Etiqueta.
  2. En la lista desplegable en la parte inferior, haga clic en Agregar etiqueta.
  3. Haga clic en el signo más y nombre la etiqueta como queramos.



Después de crear, también haga clic en Etiqueta y seleccione el deseado.

Queda por transferir los scripts a los objetos necesarios y completar algunos campos. Cree un objeto vacío y agregue el guión "Guión principal", y agregue "Guión de jugador" a nuestra espada y escudo.



Con total confianza, puedo decir que el juego está listo. Lanzamos y disfrutamos de nuestra primera creación.



Toda buena y buena suerte en gamedev!

Source: https://habr.com/ru/post/470103/


All Articles