Créer un jeu de lancer libre de basket-ball avec Unity

Ce que vous allez créer

introduction

Dans ce didacticiel, vous allez apprendre à créer un jeu 3D mobile en utilisant C # et Unity. L'objectif du jeu est de marquer le plus de points possible. Vous apprendrez les aspects suivants du développement de jeux Unity:

  • Mise en place d'un projet 3D dans Unity
  • Mise en place de contrôles de prise
  • Intégration de la physique
  • Créer des prefabs

1. Créer un nouveau projet Unity

Ouvrez Unity et sélectionnez Nouveau projet du Fichier menu pour ouvrir la boîte de dialogue nouveau projet. Indiquez à Unity où vous souhaitez enregistrer le projet et configurez leConfigurer les valeurs par défaut pour: menu à 3D.


2. Paramètres de construction

Dans l'étape suivante, l'interface utilisateur de Unity vous est présentée. Configurez le projet pour le développement mobile en choisissant Paramètres de construction du Fichier menu et sélectionnez votre plate-forme préférée. J'ai choisi Android pour ce tutoriel.


3. appareils

La première chose que nous devons faire après avoir sélectionné la plateforme que nous ciblons est de choisir la taille de l’illustration que nous utiliserons dans le jeu. J'ai répertorié ci-dessous les appareils les plus importants pour chaque plate-forme et inclus la résolution de l'écran et la densité de pixels de l'appareil..

iOS

  • iPad: 1024px x 768px
  • iPad Retina: 2048px x 1536px
  • 3.5 "iPhone / iPod Touch: 320px x 480px
  • 3.5 "iPhone / iPod Retina: 960px x 640px
  • 4 "iPhone / iPod Touch: 1136px x 640px

Android

Android étant une plate-forme ouverte, il existe de nombreux appareils, résolutions d'écran et densités de pixels. Quelques-uns des plus courants sont énumérés ci-dessous.

  • Asus Nexus 7 Tablet: 800px x 1280px, 216ppi
  • Motorola Droid X: 854px x 480px, 228ppi
  • Samsung Galaxy s3: 720px x 1280px, 306ppi

Téléphone Windows

  • Nokia lumia 520: 400px x 800px, 233ppi
  • Nokia Lumia 1520: 1080px 1920px, 367ppi

La mûre

  • Blackberry z10: 720px x 1280px, 355ppi

N'oubliez pas que le code utilisé pour ce didacticiel peut être utilisé pour cibler l'une des plateformes ci-dessus..

4. Exporter des graphiques

Selon les appareils que vous ciblez, vous devrez peut-être convertir l'illustration du jeu à la taille et à la résolution recommandées. Vous pouvez le faire dans votre éditeur d'image préféré. J'ai utilisé le Ajuster la taille… fonctionner sous la Outils menu sous OS X Aperçu application.


5. Interface utilisateur Unity

Avant de commencer, assurez-vous de cliquer sur le bouton 3D bouton dans le Scène panneau. Vous pouvez également modifier la résolution affichée dans le Jeu panneau.


6. Interface de jeu

L'interface de notre jeu sera simple. La capture d'écran ci-dessus vous donne une idée de l'illustration que nous allons utiliser et de la façon dont l'interface du jeu va ressembler. Vous pouvez trouver les illustrations et des ressources supplémentaires dans les fichiers source de ce didacticiel..


7. Langage de programmation

Vous pouvez utiliser l'un des trois langages de programmation lorsque vous utilisez Unity., C #, UnityScript, une variante de JavaScript, et Huer. Chaque langage de programmation a ses avantages et ses inconvénients, et il vous appartient de choisir celui que vous préférez. Ma préférence personnelle va au langage de programmation C #, donc c'est le langage que j'utiliserai dans ce tutoriel..

Si vous décidez d'utiliser un autre langage de programmation, veillez à consulter le document Script Reference de Unity pour obtenir des exemples..


8. effets sonores

J'utiliserai plusieurs sons pour améliorer l'expérience auditive du jeu. Les effets sonores utilisés dans ce tutoriel ont été obtenus à partir de as3sfxr et de Soungle.


9. Modèles 3D

Pour créer notre jeu, nous devons d’abord obtenir nos modèles 3D. Je recommande 3Docean pour les modèles de haute qualité, les textures, etc., mais si vous testez ou apprenez encore, les modèles gratuits peuvent constituer un bon point de départ..

Les modèles de ce tutoriel ont été téléchargés à partir de SketchUp 3D Warehouse où vous pouvez trouver une bonne variété de modèles de toutes sortes..

Comme Unity ne reconnaît pas le format de fichier SketchUp, nous devons convertir les fichiers SketchUp dans un format de fichier que Unity peut importer. Commencez par télécharger la version gratuite de SketchUp, SketchUp Make.

Ouvrez votre modèle 3D dans SketchUp Marquez et allez sélectionnez Exporter> Modèle 3D du Fichier menu et choisir Collada (* .dae) de la liste des options.

Choisissez un nom, sélectionnez un répertoire et cliquez sur Exportation. Un fichier et un dossier pour le modèle 3D seront créés. Le fichier contient les données de l'objet 3D et le dossier les textures utilisées par le modèle. Vous pouvez maintenant importer le modèle dans Unity, comme expliqué à l'étape suivante..


10. Actifs d'importation

Avant de commencer à coder, nous devons ajouter nos ressources au projet Unity. Vous pouvez le faire de plusieurs manières:

  • Sélectionner Importer un nouvel actif du Les atouts menu.
  • Ajoutez les éléments dans le dossier des actifs de votre projet..
  • Faites glisser les éléments dans la fenêtre du projet..

Une fois cette étape terminée, vous devriez voir les actifs dans le projet. Les atouts dossier dans le Projet panneau.


11. Créer une scène

Nous sommes prêts à créer la scène de notre jeu en faisant glisser des objets vers le Hiérarchie ou Scène panneau.


12. Fond 2D

Commencez par faire glisser l’arrière-plan dans la Hiérarchie panneau. Il devrait apparaître automatiquement dans le Scène panneau. Ajuste le Transformer valeurs dans le Inspecteur comme indiqué dans la capture d'écran suivante.


13. Cerceau

L'objectif du jeu est de lancer la balle à travers le cerceau. Faites-le glisser du Les atouts panneau au Scène et changer sa Transformer propriétés comme indiqué dans la capture d'écran ci-dessous.


14. lumière

Comme vous l'avez peut-être remarqué, le panier de basket est un peu trop sombre. Pour résoudre ce problème, nous devons ajouter un Lumière à notre scène. Aller à GameObject> Créer un autre et sélectionnez Lumière directionnelle. Cela créera un objet qui produira un faisceau de lumière. Changer son Transformer valeurs comme indiqué dans la capture d'écran suivante afin qu'il illumine le cerceau de basket.


15. collisionneur

Avec le panier de basket-ball bien allumé, il est temps d'ajouter un collisionneur pour que le ballon ne passe pas lorsqu'il frappe la zone blanche.

Clique le Ajouter un composant bouton dans le Inspecteur panneau, sélectionnez Physique> Box Collider, et changez ses valeurs comme indiqué dans la capture d'écran suivante.

Vous verrez une bordure verte autour du cerceau de basketball dans le Scène panneau représentant le collisionneur de boîte que nous venons d'ajouter.


16. Matériel de physique de rebond

Si nous lançions une balle au panier de basket-ball, elle serait stoppée par le collisionneur de boîtes, mais elle s’arrêterait sans rebondir comme vous l’espériez. Pour remédier à cela, nous avons besoin d'un Matériel de physique.

Après avoir sélectionné Créer> Matériel Physique du Les atouts menu,vous devriez le voir apparaître dans le Les atouts panneau. J'ai changé le nom en BounceMaterial.

Changer ses propriétés dans le Inspecteur panneau pour correspondre à ceux de cette capture d'écran ci-dessous.

Ensuite, sélectionnez la boîte collider du cerceau de basket et cliquez sur le petit point à droite de la Matériel texte, une fenêtre devrait apparaître dans laquelle vous pouvez sélectionner matériel de physique.


17. collisionneur

Nous allons utiliser un autre collisionneur pour détecter le moment où la balle passe dans le cerceau. Cela devrait être un collisionneur de déclenchement pour s'assurer qu'il détecte la collision sans interagir avec le corps physique.

Créez un nouveau collisionneur pour le cerceau, comme indiqué à l'étape 15, et mettez à jour ses valeurs comme indiqué dans la capture d'écran suivante..

Cela place le collisionneur sous l'anneau où la balle ne peut pas remonter, ce qui signifie qu'un panier a été fabriqué. Assurez-vous de vérifier le Est déclencheur case à cocher pour le marquer comme collisionneur de déclenchement.


18. collisionneur à anneau

Il est temps d'ajouter un collisionneur à l'anneau lui-même. Parce que nous avons besoin de la balle pour passer au centre de l’anneau, nous ne pouvons pas avoir de collecteur de sphères ou de boîtes, mais nous allons utiliser un Collisionneur.

UNE Collisionneur nous permet d'utiliser la forme de l'objet 3D en tant que collider. Comme indiqué dans la documentation, le maillot colliseur construit sa représentation de collision à partir du maillage attaché à GameObject..

Sélectionnez le cerceau dans la liste. Hiérarchie panneau, cliquez sur le triangle à sa gauche pour développer sa hiérarchie, développez group_17, et sélectionnez l'élément nommé Bague.

Ajoutez un collisionneur comme indiqué à l'étape 15, mais veillez à sélectionner Collisionneur. Unity détectera alors automatiquement la forme du modèle et créera un collisionneur..


19. Hoop Sound

Pour jouer un son lorsque le ballon frappe le cerceau, nous devons d’abord le joindre. Sélectionnez-le parmi Hiérarchie ou Scène voir, cliquez sur le Ajouter un composant bouton dans le Inspecteur panneau, et sélectionnez Source audio dans le l'audio section.

Décocher Jouez sur Awake et cliquez sur le petit point à droite, sous l'icône d'engrenage, pour sélectionner le son que vous souhaitez lire..


20. balle

Concentrons-nous maintenant sur le basketball. Faites-le glisser du Les atouts dossier et placez-le dans la scène. Ne vous inquiétez pas de la position de la balle pour l'instant, car nous allons la convertir en Préfabriqué plus tard.

Pour que la balle détecte quand elle frappe le cerceau, nous devons ajouter un composant, un Collisionneur de sphère pour être précis. Sélectionnez la balle dans la scène, ouvrez le Inspecteur panneau, et cliquez Ajouter un composant. Dans la liste des composants, sélectionnez Collisionneur de sphère du La physique section et mettre à jour ses propriétés comme indiqué ci-dessous.


21. Ball RigidBody

Pour détecter une collision avec le ballon de basket, au moins un des objets en collision doit avoir un Corps rigide composant attaché à elle. Pour en ajouter un à la balle, sélectionnez Ajouter un composant dans le Inspecteur panneau, et choisissez La physique > Corps rigide.

Laissez les paramètres à leurs valeurs par défaut et faites glisser la balle du Hiérarchie panneau au Les atouts panneau pour le convertir en un Préfabriqué.


22. Cerceau Sprite

Pour représenter les paniers déjà fabriqués par le joueur, nous utilisons une version 2D du panier de basket. Faites-le glisser du panneau Actifs et placez-le sur la scène, comme indiqué ci-dessous..


23. Score du texte

Sous le cercle 2D, nous affichons le nombre de paniers que le joueur a marqués jusqu'à présent. Sélectionner GameObject> Créer autre> Texte d'interface graphique pour créer un objet texte, placez-le au bas du panier de basket-ball et modifiez le texte dans Hiérarchie panneau à 0.

Vous pouvez incorporer une police personnalisée en l’important dans le Les atouts dossier et changer le Police de caractère propriété du texte dans le Inspecteur.

24. mètre de force

La jauge de force est une barre qui indique la force utilisée pour tirer la balle. Cela ajoutera un autre niveau de difficulté au jeu. Faites glisser les sprites pour le dynamomètre de la Les atouts panneau au Scène et positionnez-les comme indiqué dans la capture d'écran ci-dessous.


25. balle sprite

Nous avons également ajouté un indicateur à l'interface indiquant le nombre de coups laissés au joueur. Pour terminer cette étape, suivez les mêmes étapes que nous avons utilisées pour afficher le score actuel du joueur..


26. Script de panier

Il est enfin temps d'écrire du code. Le premier script que nous allons créer est le Panier script qui vérifie si la balle traverse l'anneau ou frappe le tableau.

Sélectionnez le cerceau et cliquez sur le Ajouter un composant bouton dans le Inspecteur panneau. Sélectionner Nouveau script et nommez-le Panier. N'oubliez pas de changer le langage en C #. Ouvrez le fichier nouvellement créé et ajoutez l'extrait de code suivant..

utiliser UnityEngine; using System.Collections; public class Basket: MonoBehaviour score public GameObject; // référence à l'objet de jeu ScoreText, défini dans l'éditeur public AudioClip basket; // référence au son du panier void OnCollisionEnter () // si la balle frappe au tableau audio.Play (); // joue le son du tableau de bord void OnTriggerEnter () // si la balle touche le panier collider int currentScore = int.Parse (score.GetComponent (). text) + 1; // ajoute 1 au score score.GetComponent (). text = currentScore.ToString (); AudioSource.PlayClipAtPoint (basket, transformation.position); // joue le son du panier 

Dans ce script, nous définissons deux variables publiques qui représentent des objets sur le Scène et dans le Les atouts dossier. Retournez dans l'éditeur et cliquez sur le petit point à droite des variables pour sélectionner les valeurs décrites dans les commentaires..

Nous jouons un son lorsque le ballon frappe le panier de basket et vérifions si le ballon traverse l'anneau. le Analyser méthode va convertir le texte de la Texte de l'interface graphique objet de jeu à un nombre afin que nous puissions incrémenter le score puis le redéfinir en tant que texte à l'aide toString. À la fin, nous jouons le panier du son.

27. Script de tournage

le Tirer La classe gère le reste de l'interaction du jeu. Nous allons décomposer le contenu du script pour le rendre plus facile à digérer.

Commencez par sélectionner le Caméra et cliquez sur le Ajouter un composant bouton dans le Inspecteur panneau. Sélectionner Nouveau script et nommez-le Tirer.

28. Variables

Dans l'extrait de code suivant, j'ai répertorié les variables que nous allons utiliser. Lisez les commentaires dans l'extrait de code pour obtenir des précisions..

utiliser UnityEngine; using System.Collections; Classe publique Shoot: MonoBehaviour Ball GameObject public; // référence au préfabriqué ball, défini dans l'éditeur privé Vector3 throwSpeed ​​= new Vector3 (0, 26, 40); // Cette valeur est un panier sûr, nous allons le modifier en utilisant le dynamomètre public Vector3 ballPos; // position de la balle de départ private bool thrown = false; // si la balle a été lancée, empêche 2 balles ou plus private GameObject ballClone; // nous n'utilisons pas le jeu public préfabriqué d'origine GameObject availableShotsGO; // Référence d'objet de jeu ScoreText private int availableShots = 5; compteur GameObject public; // références au compteur de force public GameObject arrow; Flotteur privé arrowSpeed ​​= 0.3f; // Difficulté, valeur supérieure = déplacement plus rapide de la flèche private bool right = true; // utilisé pour inverser le mouvement de la flèche public GameObject gameOver; // game over text 

29. augmenter la gravité

Ensuite, nous créons le Début méthode dans laquelle nous définissons la force de gravité -20 faire tomber la balle plus vite.

void Start () / * Augmenter Gravity * / Physics.gravity = nouveau Vector3 (0, -20, 0);  

30. Comportement du compteur de force

Pour gérer les interactions avec le moteur physique, nous implémentons le FixedUpdate méthode. La différence entre cette méthode et la régulière Mettre à jour la méthode est que FixedUpdate fonctionne sur la base d'étapes physiques au lieu de chaque image, ce qui peut poser problème si le périphérique est lent en raison d'un manque de mémoire, par exemple.

dans le FixedUpdate méthode, nous déplaçons la flèche du dynamomètre en utilisant le droite variable pour détecter quand inverser le mouvement de la flèche.

 void FixedUpdate () / * Flèche de déplacement de compteur * / if (arrow.transform.position.x < 4.7f && right)  arrow.transform.position += new Vector3(arrowSpeed, 0, 0);  if (arrow.transform.position.x >= 4.7f) right = false;  if (right == false) arrow.transform.position - = new Vector3 (arrowSpeed, 0, 0);  if (arrow.transform.position.x <= -4.7f)  right = true; 

31. tirer la balle

Le ballon de basket est lancé lorsque le joueur tape sur l’écran. Chaque fois que l'écran est tapé, nous vérifions d'abord s'il y a déjà une balle en l'air et si le joueur a des tirs disponibles. Si ces conditions sont remplies, nous mettons à jour les valeurs, créons une nouvelle instance de la balle et la lançons à l'aide de la touche addForce méthode.

/ * Lancer la balle en tapant sur * / if (Input.GetButton ("Fire1") &&! Jeté && availableShots> 0) jeté = true; availableShots--; availableShotsGO.GetComponent (). text = availableShots.ToString (); ballClone = Instantiate (ball, ballPos, transform.rotation) en tant que GameObject; throwSpeed.y = throwSpeed.y + arrow.transform.position.x; throwSpeed.z = throwSpeed.z + arrow.transform.position.x; ballClone.rigidbody.AddForce (throwSpeed, ForceMode.Impulse); audio.Play (); // joue le son

32. Retirer la balle

Dans le bloc de code suivant, nous testons si la balle atteint le sol et la retirons quand elle le fait. Nous nous préparons également pour le prochain lancer en réinitialisant les variables.

/ * Supprimer la balle lorsqu'elle touche le sol * / if (ballClone! = Null && ballClone.transform.position.y < -16)  Destroy(ballClone); thrown = false; throwSpeed = new Vector3(0, 26, 40);//Reset perfect shot variable 

33. Vérifier les plans disponibles

Après avoir retiré la balle, nous vérifions qu'il reste des tirs au joueur. Si ce n'est pas le cas, nous terminons le jeu et appelons redémarrer.

/ * Vérifie s'il n'y a pas de tir * / if (availableShots == 0) arrow.renderer.enabled = false; Instanciation (gameOver, nouveau Vector3 (0.31f, 0.2f, 0), transformation.rotation); Invoke ("restart", 2); 

34. redémarrer

le redémarrer La méthode s’exécute deux secondes après que le joueur ait épuisé ses coups, redémarre le jeu en invoquant LoadLevel.

 void restart () Application.LoadLevel (Application.loadedLevel); 

35. Test

Il est temps de tester le jeu. presse Commande-P jouer au jeu dans Unity. Si tout fonctionne comme prévu, alors vous êtes prêt pour les étapes finales.


36. Paramètres du joueur

Lorsque vous êtes satisfait de votre jeu, il est temps de sélectionner Paramètres de construction du Fichier menu et cliquez sur le Paramètres du joueur bouton. Cela devrait amener le Paramètres du joueur dans le Inspecteur panneau où vous pouvez définir les paramètres pour votre application.

Les paramètres sont d'application et incluent le créateur ou la société, la résolution et le mode d'affichage de l'application, le mode de rendu, la compatibilité des périphériques, etc. Les paramètres varient en fonction de la plate-forme et des périphériques ciblés par votre application, tout en conservant les exigences du magasin que vous publiez. à l'esprit.


37. Icônes et images Splash

En utilisant les illustrations que vous avez créées précédemment, vous pouvez maintenant créer une jolie icône et une image de démarrage pour votre jeu. Unity vous indique les tailles requises, qui dépendent de la plate-forme pour laquelle vous construisez..

38. Construire et jouer


Une fois votre projet correctement configuré, il est temps de revenir sur la Paramètres de construction et cliquez sur le Construire Bouton. C'est tout ce dont vous avez besoin pour créer votre jeu à des fins de test et / ou de distribution..

Conclusion

Dans ce didacticiel, nous avons appris à connaître les modèles 3D, les collisionneurs de maillages, les matériaux physiques, la détection de collision et d'autres aspects du développement de jeux Unity. Je vous encourage à expérimenter le résultat et à personnaliser le jeu pour qu'il soit le vôtre. J'espère que vous avez aimé ce tutoriel et que vous l'avez trouvé utile.