Création d'un jeu de clicker simple à partir de zéro

Au cours des dernières années, les jeux d'un genre tel que les «clickers» gagnent en popularité. Je suis moi-même très intéressé à y jouer, mais il n'est pas moins intéressant de créer un jeu - un clicker moi-même. Grâce à un moteur comme Unity, la création d'un chef-d'œuvre ne sera pas difficile, même pour un simple débutant. Passons aux choses sérieuses.

Que faut-il faire?


  1. Réfléchissez à pourquoi et sur quoi devrions-nous cliquer?
  2. Que doit-il se passer lorsque nous cliquons?
  3. Que doit-il se passer si nous ne cliquons pas?

Comme j'ai répondu à ces questions:

  1. Nous devons cliquer n'importe où sur l'écran.
  2. Lorsque vous cliquez dessus, l'objet doit changer.
  3. Si ignoré, une perte.

Quel sera le jeu?


Le joueur doit choisir l'épée ou le bouclier à temps, selon ce qui tombera d'en haut. Autrement dit, l'épée tombe - nous sélectionnons l'épée, le bouclier tombe - nous sélectionnons le bouclier. Si vous faites le mauvais choix, le joueur perd simplement. En d'autres termes, tout est assez simple, mais dans la mise en œuvre, c'est encore plus simple.

Où puis-je amener un débutant à prendre un beau sprite et un arrière-plan? Réponse: dessinez-vous.

Il n'y a rien de compliqué, comme nous le dessinons dans Adobe Illustrator. Même si vous n'avez pas d'expérience dans le dessin, là encore, nous ne sommes pas contrariés, car je vais tout vous montrer en détail.

De quoi avons-nous besoin:

  1. L'épée
  2. Bouclier
  3. Contexte
  4. Branche avec des feuilles

C’est assez.

La technique est simple et je vais montrer avec l'exemple d'une épée:

  1. Dessinez un contour
  2. Remplir de fleurs
  3. Dessine les ombres



Et voilà, notre épée est prête!

Nous le faisons aussi avec d'autres. Ne vous inquiétez pas si au début une de vos créations vous semble loin d'être idéale, car ensemble elles ressembleront à un tableau de Van Gogh. Une plaisanterie. Ou peut-être pas.







Le fond sera encore plus délicat.

Dessinez un rectangle vert et utilisez un dégradé. Cela ressemble à ceci:



On peut dire que les cours d'art sont terminés et on passe enfin à Unity.

Tout d'abord, jetons nos sprites et glissons l'épée et le bouclier dans la fenêtre de hiérarchie, car nous devrons créer des préfabriqués à partir d'eux et pas seulement.



  1. Ajoutez Rigidbody 2D et définissez la valeur sur «0» dans le champ Gravity Scale pour que le bouclier se trouve au même endroit.
  2. Ajoutez Circle Collider 2D et cochez la case Is Trigger pour suivre les actions.

Avec le préfabriqué les mêmes actions, vous seul devez définir la valeur «1» dans le champ Gravity Scale pour que le bouclier tombe. Faites-le glisser vers le dossier Prefabs. Avec l'épée la même action. C'est fait!

Décorez ensuite le jeu avec des sprites dessinés plus tôt. La première chose que nous jetons est le fond.

  1. Placer les branches sur le dessus
  2. Ajoutez un journal ci-dessous
  3. Placer un pont au milieu



Le principal secret de conception est le suivant: nous placerons des branches en haut et en bas, et sur l'échelle, nous réduirons la valeur de transparence. Pourquoi faire ça?

Le fait est que nous créons ainsi une certaine illusion d'espace. Il semblera au joueur qu'il y a un objet avant, un objet arrière et un horizon. Et c'est génial!

Créez maintenant un bouton qui occupera tout l'écran. Pour créer un bouton dans la hiérarchie, cliquez sur UI -> Button. Suivant:

  1. Cliquez sur Couleur.
  2. Nous définissons la valeur "0" dans le champ A, qui est responsable de la transparence de notre bouton.
  3. Nous nous assurons que le bouton est devenu ce que nous voulions.



De la même manière, nous créons un texte pour montrer notre score actuel et notre record.

Et enfin, nous sommes arrivés à la programmation.

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); //   (, ...) } } } 

Deuxième script:

 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);//   } } } 

Que se passe-t-il dans ces méthodes?

Démarrer (). Cela commence à chaque fois que nous démarrons le jeu ou redémarrons la scène. Tout ce qui est écrit dans cette méthode n'est exécuté qu'une seule fois. On y écrit donc: un compte égal à zéro, le lancement d'une coroutine (ce qui est responsable de la création des prefabs), la valeur du temps.

Mettre à jour (). Exécutez une fois par image. Il est pratique d'écrire ici qui est constamment mis à jour. Dans notre cas: un indicateur de score et d'enregistrement, une valeur aléatoire n dont dépend ce qui est créé - une épée ou un bouclier.

BtnClick (). Vous vous demandez peut-être pourquoi cette méthode est «publique»? Nous avons besoin qu'il se reflète dans Unity lui-même et nous pouvons épeler le mot «Click» afin de suivre le bouton sur lequel nous cliquons, bien qu'il n'y ait qu'un seul bouton, cela ne fera de mal à personne d'en savoir un peu plus.



Ici, nous écrivons ce qui devrait arriver après avoir cliqué sur le bouton. Lorsqu'il est enfoncé, il doit passer de l'épée au bouclier et vice versa, régler la valeur de temps sur "1", car lors de la perte, elle est remise à zéro.

OnTriggerEnter2D (). Vérifie la collision d'un objet. Si les balises des deux objets correspondent, le score est augmenté de un et le préfabriqué est détruit. Si les étiquettes sont différentes, un temps de perte s'arrête et le score est réinitialisé.

Il reste à ajouter ces mêmes balises. Et ici, c'est très simple:

  1. Dans la fenêtre Inspecteur, cliquez sur Tag.
  2. Dans la liste déroulante tout en bas, cliquez sur Ajouter une balise.
  3. Cliquez sur le signe plus et nommez la balise comme nous voulons.



Après la création, cliquez également sur Tag et sélectionnez celui souhaité.

Il reste à transférer les scripts vers les objets nécessaires et à remplir certains champs. Créez un objet vide et ajoutez le script "Main Script", et ajoutez "Player Script" à notre épée et à notre bouclier.



En toute confiance, je peux dire que le jeu est prêt. Nous lançons et apprécions notre première création.



Bonne chance à gamedev!

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


All Articles