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:
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.
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.
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..
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.
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.
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.
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..
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..
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.
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..
Avant de commencer à coder, nous devons ajouter nos ressources au projet Unity. Vous pouvez le faire de plusieurs manières:
Une fois cette étape terminée, vous devriez voir les actifs dans le projet. Les atouts dossier dans le Projet panneau.
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.
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.
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.
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.
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.
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.
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.
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..
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..
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.
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é.
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..
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.
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.
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..
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.
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
.
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
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);
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;
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
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
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);
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);
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.
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.
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..
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..
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.