Vous êtes nouveau sur Unity? Vous cherchez à apprendre comment accepter les commentaires des joueurs et déplacer les personnages sur l'écran? Nous avons créé ce guide pour présenter trois façons différentes de contrôler les mouvements des joueurs dans Unity.
Que vous débutiez dans le codage ou que vous ayez une certaine expérience à votre actif, ce didacticiel C # vous mettra sur pied et vos personnages sur les leurs.
Commençons.
Déplacement des joueurs dans Unity: collecte des données
Tout d'abord, vous devez savoir comment capturer les entrées de l'utilisateur et les transformer en mouvement dans le jeu. Unity rend cela assez facile tant que vous savez où chercher.
Avec Unity ouvert, cliquez sur Éditer dans la barre d'outils supérieure. Sélectionnez maintenant Paramètres du projet. Dans la liste de gauche, choisissez Gestionnaire d'entrée. Sélectionner Haches, remplissant la liste des valeurs d'entrée. Vous aurez envie de regarder Horizontal et Verticale pour le mouvement de base.
Vous utiliserez ces axes avec
Contribution. GetAxisRaw(); pour le mouvement de base dans la section suivante.Mouvement du joueur dans Unity à l'aide d'un corps rigide et d'un collisionneur
Maintenant que vous connaissez les noms des axes, vous pouvez les utiliser pour contrôler les mouvements des joueurs.
Dans votre projet Unity Hiérarchie afficher, cliquer avec le bouton droit et sélectionner Objet 3D > Capsule pour créer ce à quoi vous donnerez du mouvement. Assurez-vous d'utiliser la même tactique pour créer un terrain Avion pour que votre capsule puisse se tenir dessus.
Assurez-vous de réinitialiser le Transformer valeur des deux objets, et déplacez votre capsule de sorte qu'elle se trouve sur l'avion. Renommez votre capsule en quelque chose comme "Player" pour une identification facile.
En rapport: Les 5 langages de développement de jeux Unity: lesquels devez-vous apprendre ?
Clique sur le Joueur objet et, dans le Inspecteur vue, faites défiler jusqu'à Ajouter un composant. Ajouter un Corps rigide, puis ajoutez un autre composant en tant que Collisionneur de capsules cette fois. Vous aurez besoin de ces composants pour ajouter de la physique, et donc du mouvement, à votre Joueur.
Ensuite, faites un clic droit dans votre Scénarios dossier et Créer un nouveau Script C#. Nommez ce script quelque chose dans le sens de "PlayerMovement". Si vous envisagez d'ajouter plusieurs types de mouvement pour différents personnages ou types de contrôleurs, vous souhaiterez créer de nombreux scripts différents pour chaque type de mouvement. Pour l'instant, nous allons nous concentrer sur les bases et utiliser un seul script.
Voir également: Qu'est-ce que la programmation modulaire dans Unity et pourquoi est-ce important ?
Double-cliquez sur votre script pour l'ouvrir. Vous serez accueilli avec un script Unity par défaut :
à l'aide de Système. Collections ;
à l'aide de Système. Collections. Générique;
en utilisant UnityEngine ;
classe publique PlayerMovement: MonoBehaviour
{
// Start est appelé avant la première mise à jour du cadre
annuler Start()
{}
// La mise à jour est appelée une fois par image
annuler la mise à jour()
{
}
}
Vous pouvez supprimer à l'aide de Système. Collections ; et en utilisantSystème. Collections. Générique; car ils ne sont pas nécessaires pour ce script.
Avec cela à l'écart, concentrez-vous sur
public class PlayerMovement: MonoBehaviour {
pour le moment. À l'intérieur de l'accolade d'ouverture, créez un flotteur public variable nommée vitesse ou quelque chose de similaire. Ce vitesse variable est un multiplicateur qui contrôlera la rapidité avec laquelle notre Joueur se déplace après quelques programmations supplémentaires. Pour l'instant, réglez vitesse égal à quelque chose comme 10f.
Vous devez également indiquer à Unity qu'il y a un Rigidbody à manipuler dans ce script. Cela se fait avec le mot clé Corps rigide et un nom de variable—nous choisirons rb.
classe publique PlayerMovement: MonoBehaviour
{
vitesse du flotteur public = 10f; // Contrôle le multiplicateur de vitesse
Rigidbody rb; // Indique au script qu'il y a un corps rigide, nous pouvons utiliser la variable rb pour le référencer dans un autre script
C'est tout ce que vous devez ajouter dans cette section. Maintenant, passez à annuler Start(). Au démarrage du jeu, vous devez définir le rb variable égale à la Corps rigide sur le Joueur ainsi:
annuler Start()
{
rb = GetComponent(); //rb est égal au rigidbody sur le joueur
}
Maintenant, jetez un oeil à la annuler la mise à jour() une fonction. C'est la fonction que vous utiliserez pour saisir constamment les entrées des claviers, contrôleurs, etc. des joueurs. Rappelez-vous quand vous avez coché Paramètres du projet pour Axes d'entrée? Vous les utiliserez ici.
annuler la mise à jour()
{
float xMove = Entrée. GetAxisRaw("Horizontal"); // la clé d change la valeur en 1, une clé change la valeur en -1
float zMove = Entrée. GetAxisRaw("Vertical"); // la touche w change la valeur en 1, la touche s change la valeur en -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * vitesse; // Crée une vélocité dans le sens d'une valeur égale à la pression de touche (WASD). rb.velocity.y traite des chutes + sauts en réglant la vélocité sur y.
}
Ne vous inquiétez pas si vous vous sentez dépassé par le saut dans le code; nous allons l'expliquer étape par étape. Tout d'abord, créez un flotter variable avec un nom comme xDéplacer, et mettez-le égal à Contribution. GetAxisRaw("Horizontal");
Contribution. GetAxisRaw(); est la façon dont Unity enregistre les entrées du lecteur à partir du Haches tu as trouvé dans le Paramètres du projet. Vous pouvez en savoir plus à ce sujet dans Documentation officielle de Unity. "Horizontal" vient de la Axe horizontal nom dans l'unité. Cet axe contrôle le mouvement gauche et droit avec les touches "a" et "d".
Comme vous pouvez probablement le deviner maintenant, float zMove = Entrée. GetAxisRaw("Vertical");
fait la même chose mais pour les touches "w" et "s".
En rapport: Les meilleurs tutoriels Unity 3D pour les débutants
Ensuite, vous mettrez ça vitesse variable que vous avez créée en jeu et complétez la dernière pièce du puzzle pour le mouvement des joueurs dans Unity.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * vitesse; // Crée une vélocité dans le sens d'une valeur égale à la pression de touche (WASD). rb.velocity.y traite des chutes + sauts en réglant la vélocité sur y.
Retournez dans Unity's Inspecteur vue pour le Joueur objet. Jetez un oeil à la Corps rigide-en dessous de Info, vous verrez une valeur Rapidité. Il s'agit de la valeur que vous ciblez rb.vitesse.
nouveau Vector3(xMove, rb.velocity.y, zMove) * vitesse, crée un nouveau vecteur avec les valeurs x, y et z fournies, puis multiplie la valeur du vecteur par vitesse.
Assurez-vous de faire glisser le Mouvement du joueur script sur le Joueur objet dans Unity, et c'est tout! Au total, vous disposez d'un script C # fonctionnel qui prend les entrées du joueur et les transforme en mouvement de personnage dans Unity.
Voici le code fini :
en utilisant UnityEngine ;
classe publique PlayerMovement: MonoBehaviour
{
vitesse du flotteur public = 10f; // Contrôle le multiplicateur de vitesse
Rigidbody rb; // Indique au script qu'il y a un corps rigide, nous pouvons utiliser la variable rb pour le référencer dans un autre script// Start est appelé avant la première mise à jour du cadre
annuler Start()
{
rb = GetComponent(); //rb est égal au rigidbody sur le joueur
}// La mise à jour est appelée une fois par image
annuler la mise à jour()
{
float xMove = Entrée. GetAxisRaw("Horizontal"); // la clé d change la valeur en 1, une clé change la valeur en -1
float zMove = Entrée. GetAxisRaw("Vertical"); // la touche w change la valeur en 1, la touche s change la valeur en -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * vitesse; // Crée une vélocité dans le sens d'une valeur égale à la pression de touche (WASD). rb.velocity.y traite des chutes + sauts en réglant la vélocité sur y.
}
}
Noter: Si vous constatez que votre personnage fait plus de flop qu'autre chose, assurez-vous de verrouiller la rotation du joueur dans le Inspecteur.
Apprenez et gagnez plus dans Unity
Maintenant que vous savez comment programmer le mouvement des joueurs dans Unity avec les composants Rigidbody et Collider, qu'allez-vous apprendre ensuite? Peut-être que développer votre contrôleur de mouvement pour ajouter des choses comme le glissement, le double saut, etc., serait amusant et engageant.
Unity Learn regorge de sujets intéressants pour faire progresser vos compétences en développement de jeux. Nous pensons que l'un des facteurs les plus importants pour approfondir vos connaissances en programmation est d'apprendre quelque chose de nouveau chaque jour. Restez curieux et heureux de pirater !
Vous voulez commencer à développer vos propres jeux? Unity Learn est le moyen le meilleur et le plus simple d'apprendre et de maîtriser ce que vous devez savoir.
Lire la suite
- Programmation
- Développement de jeu
- Unité
- Programmation
Marcus est journaliste technique indépendant et rédacteur en chef junior pour la programmation chez MUO. Il est un apprenant tout au long de la vie, un développeur front-end amateur et un nouvelliste avec plus de 3 ans d'expérience dans le développement de prose qui tient les lecteurs au courant.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner