Dans la suite du premier article (
il est ici ), je continue à développer un jeu de plateforme basé sur l'
article «Level Design Patterns for 2D Games» .
Après la publication du premier article, il a été décidé sans équivoque que la commande de bouton qui y était décrite n'était absolument pas pratique. Par conséquent, les commandes du jeu ont été refaites sur le joystick. De plus, malheureusement, le jeu n'a pas passé la modération sur le marché du jeu. Vendredi dernier, j'ai reçu une notification que le projet avait été rejeté en raison de la collecte de métadonnées. Soit dit en passant, mon premier jeu de plateforme «Knight Kadavar» a également été rejeté pour la première fois, en raison d'une prétendue demande d'autorisation pour gérer les appels et afficher les SMS (ce qui était une stupidité totale de la part de leur robot. Le jeu ne nécessitait aucune autorisation). Google m'a alors demandé un avis écrit expliquant pourquoi j'en avais besoin. Mais, tout s'est terminé avec le fait que j'ai corrigé quelques erreurs que j'ai remarquées et que j'ai envoyé le jeu en modération. Elle a été ajoutée avec succès au marché du jeu. Maintenant, je prévois de faire exactement la même chose avec ce jeu.
Ainsi, dès que la deuxième scène a été créée, le motif a été automatiquement fermé
Scène
un fragment d'un niveau / monde basé sur un concept est généralement une difficulté à surmonter.
Bonus
objet de collection qui a un effet positif sur les joueurs
Nous réalisons 2 types de bonus pour Lucas:
- Trousse de premiers soins qui tombera lorsque vous détruisez des monstres
- Des coffres avec des épées que Lucas pourra lancer sur les ennemis
Pour mettre en place un bonus avec une trousse de premiers soins, vous devez modifier les préfabriqués avec des monstres. Plus précisément, indiquez le lieu à partir duquel les bonus apparaîtront.

Ensuite, modifiez le script Enemy.cs:
En-tête de spoiler [SerializeField] private GameObject bonusPref;
Nous appelons la fonction avec le type retourné Damage (0) et vérifions si Health 0 revient. Si c'est le cas, nous appelons le générateur de nombres aléatoires. Si le générateur s'arrête en choisissant le numéro 0, alors nous jetons un bonus au joueur et détruisons le monstre.
Ensuite, nous décrivons ce que vous pouvez faire avec ce bonus. Pour ce faire, créez son préfabriqué avec les composants SpriteRenderer, BoxCollider2D et Rigidbody2D. Créez également un script qui sera responsable de ce qui doit être fait si la pomme entre en collision avec le joueur:
En-tête de spoiler public void OnTriggerEnter2D(Collider2D collision) { switch (collision.gameObject.tag) { case "Player": { HeroScript.Health = 100; Destroy(this.gameObject); } break; } }
Visionnez la
vidéo d'aperçu .
Ensuite, nous réalisons le bonus de la perte d'épées. Il peut être implémenté selon le même principe que dans la première partie, la perte de log a été implémentée. La partie intéressante sera que lorsque Lucas ramasse les épées, elles ne doivent être lancées que dans la zone de visibilité des adversaires, et non lorsque Lucas récupère les journaux. En effet, sous la forme dans laquelle le bouton Attack \ item collection est maintenant implémenté, il ferait exactement cela. Des épées ont été jetées dans n'importe quelle situation. Pour ce faire, nous modifions le code du script d'attaque / collection:
En-tête de spoiler [SerializeField] private GameObject swordPref;
Que signifient ces lignes de code? Tout d'abord, nous définissons un tableau de collisionneurs et vérifions tout ce qui est tombé dans notre cube:
Collider2D[] ED = Physics2D.OverlapBoxAll(Hero.position, new Vector2(attackInBoxX, attackInBoxY), lEnemy);
Faites attention aux paramètres passés, ils sont très différents de ceux utilisés pour OvelapCircleAll. Paramètres clés -
Vector2(attackInBoxX, attackInBoxY)
Ensuite, la condition est remplie, si le tableau de collisionneur est supérieur à 0, nous vérifions l'inventaire pour les épées. Si le nombre d'épées est 0, alors nous ne faisons rien et exécutons la méthode
ED[i].GetComponent<Enemy>().Damage(1);
comme si c'était un coup régulier. S'il est supérieur à 0, relâchez l'épée et réduisez le nombre d'épées de 1.
Ensuite, l'implémentation de la méthode instantiateSword ();
En-tête de spoiler private void instantiateSword() { GameObject newArrow = Instantiate(swordPref) as GameObject; newArrow.transform.position = instSword.transform.position; Rigidbody2D rb = newArrow.GetComponent<Rigidbody2D>(); if (GameObject.Find("Hero").GetComponent<HeroScript>().localScale.x > 0) { rb.velocity = new Vector3(swordSpeed, 0, 0); } else { rb.velocity = new Vector3(-swordSpeed, 0, 0); newArrow.transform.Rotate(0,0,-180); } }
Si vous avez bien lu l'article précédent, vous avez peut-être remarqué que ce code ressemble à une section de code qui est responsable du tournage d'un tournesol. Ajout de lignes à cette section de code qui sont responsables de la détermination de l'échelle de Lucas. Autrement dit, il regarde à gauche ou à droite:
(GameObject.Find("Hero").GetComponent<HeroScript>().localScale.x > 0)
Si Lucas regarde vers la gauche, alors
rb.velocity = new Vector3(-swordSpeed, 0, 0); newArrow.transform.Rotate(0,0,-180);
l'épée vole vers la gauche et la fait également pivoter de 180 degrés.
Visionnez la
vidéo d'aperçu .
En effectuant cette action, nous avons automatiquement fermé un autre motif 1:
Objet
toute entité qui apparaît dans la scène du jeu et est capable de changer son état. Les objets incluent les dangers, les ennemis, les bonus, etc.Bien que, très probablement, ce modèle ait été mis en œuvre plus tôt lors de la programmation du premier monstre.
En conséquence, à l'heure actuelle, 3 modèles ne sont pas mis en œuvre:
- Zone inaccessible
- La mécanique
- Le patron
La mécanique en ce moment m'intéresse beaucoup. Parce que je ne peux pas me dire que je comprends exactement ce que différentes personnes mettent dans cette définition.
De plus, une
zone inaccessible . Dans ce numéro, je traiterai pendant un certain temps des problèmes de conception de niveau. D'abord parce que je veux rendre le troisième niveau sombre. Très probablement une grotte ou un donjon. Avec la possibilité de réaliser des effets d'éclairage.
Boss ! Il restera également une cerise sur le gâteau. Je veux le rendre aussi indépendant que possible et avec la possibilité de changer mon apparence.
La première partie de l'
articleTous les objets du jeu ont été extraits de
https://opengameart.org/ , à savoir:
N'hésitez pas et écrivez des commentaires sur Habré ou à moi à worldofonehero@gmail.com.
Merci d'avoir lu, bonne chance.