Créer une manette FPS et un système de gestion des armes dans Godot 4 | Isaac Asley | Skillshare
Recherche

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Créer une manette FPS et un système de gestion des armes dans Godot 4

teacher avatar Isaac Asley, Game Developer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Intro au cours

      0:52

    • 2.

      Créer une manette simple pour démarrer

      12:27

    • 3.

      2. Créer un gestionnaire d'armes FPS

      22:24

    • 4.

      Créer un câlin rapide et prendre des photos et recharger

      14:46

    • 5.

      Armes HitScan

      16:35

    • 6.

      Armes à projectile

      19:39

    • 7.

      Physique du Hitscan

      11:12

    • 8.

      Ramasser les armes

      12:04

    • 9.

      Armes de largage

      15:59

    • 10.

      Munitions

      11:06

    • 11.

      Ajouter une plateforme

      13:30

    • 12.

      Mélange

      19:46

    • 13.

      Merci de nous avoir regardé

      0:26

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

19

apprenants

--

projet

À propos de ce cours

C'est le tutoriel FPS ultime pour Godot 4. Nous passerons d'une simple commande FPS à un gestionnaire d'armes Full FPS. Si vous souhaitez créer un jeu comme Halo ou Doom dans Godot 4, cette série de tutoriels est faite pour vous. Nous mettons en œuvre tout ce dont vous avez besoin pour avoir une manette FPS entièrement fonctionnelle dans votre jeu.

Rencontrez votre enseignant·e

Teacher Profile Image

Isaac Asley

Game Developer

Enseignant·e
Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Intro au cours: Bonjour. Aujourd'hui, nous travaillons à la création d'un gestionnaire d'armes FPS complet, allant d'une simple scène en trois D à un système d' armes entièrement personnalisable qui vous permettra d'ajouter autant d'armes que vous le souhaitez, toutes les armes à hit scan et à projectiles auxquelles vous pouvez penser Nous ajouterons même Emilia Tack à la fin. Ensuite, vous pouvez même créer un jeu FPS complet comme moi. J'ai un prototype ici, qui ressemble un peu à un voyage entre les dimensions, je suppose, comme ce niveau et Titan Fall. Je pense que c'est encore très tôt. C'est une série de tutoriels que je suis en train réaliser qui vous permettra de créer un gestionnaire d'armes FPS complet, qui portera sur tout ce que nous faisons aujourd'hui jusqu' à l'ajout du jus et tous les avantages qui le feront ressembler un jeu FPS légitime que vous pourriez trouver sur Steam. Commençons. 2. Créer une manette simple pour démarrer: GDOfour est incroyable, et j'ai commencé à travailler sur une manette FPS pour GDOfour et je suis époustouflée par la facilité avec laquelle il est possible de faire J'ai pensé vous montrer qu'aujourd'hui, créer une manette FPS très simple avec un minimum de codage prend moins de 5 minutes J'en suis sûr, et je vais vous le montrer aujourd'hui. Alors allons-y. Si vous n'avez pas encore créé de projet, lancez-en un. Alors allons-y. Je vais ouvrir le mien. Cela va être un peu différent parce que j'ai déjà créé le monde, mais je n'ai pas de manette FPS ici. Commençons donc. La première chose à faire est de créer un corps de personnage en trois D. Ils m'ont changé de nom. J'ai du mal à le trouver. Nous avons juste besoin d'une forme de collision, trois D également, et d'une caméra. Et je vais aller de l'avant et m'assurer que ce n'est qu'un enfant du troisième corps du personnage principal D. Je vais juste le renommer en caméra principale Donnez-lui une forme de collision. Cela peut être tout ce que vous voulez, mais la capsule est typique. J'aime simplement changer la forme à une hauteur normale plutôt qu'à 2 mètres. Et abordons simplement cette question , pour qu'elle figure dans la scène. Une autre chose que j'aime faire est de lever la caméra pour qu'elle soit à une certaine hauteur. Très bien, repoussons un peu ce type. Nous allons donc ajouter un script comme celui-ci. Et le magique Inkdo Four est ce modèle. Je ne sais pas s'ils en avaient trois dans God . Peut-être dans les derniers. Je ne suis pas trop sûr, mais ces modèles sont magiques. Je vais donc cliquer sur Créer, et tout de suite, vous avez peu près tout ce dont vous avez besoin. Si vous lancez ce jeu, vous le savez probablement déjà. GD Four est absent depuis un moment. Nous avons maintenant tout ce dont nous avons besoin pour bouger et sauter. Nous n'avons tout simplement pas ce mouvement de souris. Je vais donc vous montrer comment le mettre en place aujourd'hui. La toute première chose que nous voulons faire est donc d' accéder à ce nœud de caméra principal. Maintenant, je vais utiliser un nom unique parce que c'est très basique, et je suppose simplement que nous allons probablement changer les choses au fur et à mesure que ce projet se complique. Je vais donc appeler cette caméra principale. Obtenez le nœud, les crochets, la chaîne, le pourcentage, puis la caméra principale. OK. C'est fait. OK, nous avons besoin de deux variables pour que cela fonctionne. Nous allons devoir créer une variable appelée rotation de la caméra. Et ce sera juste un vecteur deux, et je vais juste l' initialiser comme zéro, zéro D'accord, nous avons également besoin d' une variable appelée sensibilité de la souris. Je ne sais pas si je l'épelle correctement. N'hésitez pas à le consulter et à me corriger dans les commentaires. 00.1. C'est un petit chiffre parce que nous travaillons dans Radiance, donc, vous savez, nous n'avons pas besoin de grand-chose pour boucler la boucle Je pense que c'est environ trois heures. Nous voulons donc simplement réduire ce nombre. Vous pouvez toujours exposer le paramètre ultérieurement au fur et à mesure que votre projet se développe. Pour que vos utilisateurs puissent le modifier et le rendre plus ou moins sensible en fonction de leur souris. Ensuite, je vais simplement ajouter une fonction prête ici. Nous n'allons pas faire grand-chose avec ça. Encore une fois, pour rester simple, nous allons passer en mode souris par points. Et nous allons simplement le rendre en mode souris capturé, afin que la souris ne se ferme pas à l'écran pendant que nous travaillons sur ce point. OK, et le reste est dans la fonction de saisie. OK, le reste se passe donc dans la fonction de saisie. Je vais juste ajouter une petite vérification rapide pour voir si nous appuyons sur la touche d'échappement et si nous le faisons, nous exposons la souris. Cela facilite simplement le débogage. Nous pouvons toujours compliquer fil du temps, comme je n'arrête pas de le dire. Et d'accord, nous l' avons donc là. OK, c'est ici que la magie opère. Nous avons I event is input, event, motion de souris. Nous allons créer une variable et nous allons l'appeler événement de la souris. Nous allons le définir comme étant égal au point relatif de l'événement multiplié par la sensibilité de la souris, comme nous l'avons configuré ici. Ensuite, nous allons appeler une fonction appelée caméra. Écoutez, et nous allons annuler cet événement. M. Bien, créons donc cette fonction qui ressemble à un appareil photo. Et je vais juste appeler le mouvement variable. Et c'est un vecteur deux. OK, donc ce que nous faisons ici, c'est essentiellement ajouter notre mouvement à la variable de rotation de la caméra. Ce sera donc un mouvement plus égal. OK, alors il y a deux fonctions que nous devons appeler transform point basis. Est égal à la base et à la transformation des points de la caméra principale. Base par points, base égale. C'est ce qui rend cela possible et une mauvaise transformation ponctuelle. C'est bon. Ensuite, il y a deux autres fonctions que nous devons appeler, qui sont vraiment la magie, faire pivoter un objet en local. Et d'abord, nous tournons toujours en Y. Donc, le vecteur trois correspond à ce que cela attend Vous devez lui indiquer le vecteur que vous souhaitez faire pivoter. Il s'agit donc du vecteur 3010. Il existe d'autres moyens de définir cette variable. C'est exactement ce que j'aime faire. Et c'est une rotation négative de la caméra. Point X. Et voilà, prenez note ici, juste au cas où vous joueriez avec cela et que vous oublieriez. Tout d' abord, faites pivoter la caméra principale de six ans. Ensuite, vous voulez faire pivoter la caméra principale au lieu du corps cinématique Faire pivoter. En fait, nous pourrions simplement copier parce que je peux à peine voir mon clavier. Faites pivoter l'objet en local. Et c'est encore le vecteur 3, zéro, désolé, un, zéro, zéro. Nous allons donc effectuer la rotation en X ensuite, et nous appellerons point de rotation négatif de la caméra. Y ? Et nous allons opter pour Ben Rotate X. D'accord. Donc, l'autre chose que nous pourrions également vouloir faire est de simplement fixer la rotation sur l'axe Y. Je vais donc appeler Camera Rotation Dot. Y est égal à la rotation de la caméra par pince, Y, négatif 1,5. Virgule 1.2 parce que nous travaillons à nouveau en radians, donc ce ne sera pas en degrés Vous pouvez les convertir si vous le souhaitez, mais il est plus facile de les saisir directement ici. OK. Donc ça y est. On dirait que j'ai oublié une virgule. C'est bon. Allons-y encore une fois. OK, maintenant nous travaillons parfaitement. Maintenant, la seule chose que vous remarquerez , c'est que peu importe où je tourne la souris, je vais toujours de l'avant. J'appuie sur Y W, je dois dire, en ce moment. Je vais toujours de l'avant. Pour moi, c'est de la pure magie car dans Gadot 3.5, c'était un peu plus compliqué à implémenter Mais si vous regardez vers le bas dans ce script automatique, ils ont transformé la base des temps vectoriels dans trois directions d'entrée. Et c'est ce qui le fait fonctionner. C'est pourquoi je fais pivoter le corps cinématique ici et non la caméra principale Maintenant, si vous faites pivoter le personnage, il prendra automatiquement cette direction en fonction de la configuration. C'est donc super facile. Je ne sais pas depuis combien de temps nous enregistrons. Ça fait 15 minutes sur mon écran, mais, vous savez, quand je l'ai découpé, ce sera encore plus court. C'est donc tout ce que vous devez faire. C'est pour le moins compliqué. Pourquoi devons-nous transformer base égale base ? Nous réinitialisons essentiellement la base chaque fois que nous effectuons une rotation Toutes ces choses sont très confuses. Si vous avez besoin d'en savoir plus ou si vous voulez savoir comment fonctionne réellement la rotation, vous pouvez consulter la documentation et découvrir comment utiliser les trois transformations en D dans leur ensemble. C'est ainsi que j'ai dû procéder lorsque je m'entraînais, vous savez, l'année dernière ou l' année précédant la troisième IGD Et voici en gros l'extrait qu' ils vous donnent pour la manette FPS Star, qui est assez similaire à celui que je vous ai donné ici, à l'exception de la rotation de la caméra principale dans le Y. Salut, les gars. Ici, du chêne du futur. J'ai remarqué que j'avais oublié d'expliquer cette fonction dans mon tutoriel, et j'ai pensé que cela valait la peine d'y revenir et de l'expliquer. C'est en quelque sorte ce que nous faisons ici, nous effectuons le mouvement de la souris lors de l'événement d'entrée. s'agit donc simplement d'un chiffre relatif à un point d' événement sur votre écran. Donc, si vous l'imprimiez, il s'agirait essentiellement d'une coordonnée liée à la direction dans laquelle se déplace votre souris à un moment donné. Et nous pouvons essentiellement utiliser ces informations. Nous le transmettons à l'apparence de la caméra, puis nous l'ajoutons à la rotation de la caméra, et cela s'accumule indéfiniment Évidemment, nous bloquons le Y parce que nous ne voulons pas pouvoir tourner indéfiniment. Mais si nous tournons sur l'axe Y, nous voulons pouvoir simplement tourner indéfiniment. Et puis nous arrivons à la rotation locale de l'objet. Maintenant, nous allons d'abord le faire dans le Y, mais vous remarquerez peut-être que nous utilisons le point de rotation de la caméra X. Donc, si vous y pensez , votre souris, vous la déplacez simplement vers la gauche sur l'écran, et c'est en fait l'axe X de votre écran. Mais nous voulons faire tourner le Y. Si vous imaginez qu'une épingle passe dans la tête de votre personnage, Y est celle qui va en haut, et nous ne faisons que la renverser Ensuite, nous allons faire rotation dans le X, et nous allons utiliser le Y. C'est donc en fait le même principe Lorsque nous poussons notre écran vers le haut, il s'agit en fait de l'axe Y de notre écran, mais c'est l'axe X de notre personnage. Si vous imaginez que vous venez de recevoir votre cardan à trois D, Si vous imaginez que vous venez de recevoir X traverse le personnage et que nous le faisons pivoter Ce sont tes hauts et tes bas. Et ce n'est quelque sorte qu'un petit aperçu de la façon dont cela fonctionne. Et j'ai pensé que ce serait peut-être mieux que de simplement ignorer tout cela Donc c'est vraiment ça. Si tu fais un simulateur de marche, c'est littéralement tout ce dont tu as besoin. C'est incroyable. Et c'est tellement rapide. Je n'arrive pas à y croire. Je suis 3. 2. Créer un gestionnaire d'armes FPS: Très bien, les gars, bienvenue dans la création d' un système de gestion des armes FPS. In GidOfurt est le deuxième épisode de cette série de tutoriels Dans ce didacticiel, nous allons passer en revue la configuration des animations pour notre système de gestion des armes FPS, création d'une ressource que nous pouvons utiliser sur toutes nos armes, et enfin, la configuration de notre gestionnaire d'armes, qui est une machine à états qui contrôlera quelle est l'arme actuelle et quand changer toutes ces bonnes choses et d'autres à venir. Vous avez déjà créé vos animations, alors vous pouvez continuer et sauter cette première partie. J'aurai des horodatages là-bas si vous voulez passer à l'étape suivante. Mais commençons par créer les animations. La première chose que je vais faire est d'ajouter un environnement à la scène car cela semble assez ennuyeux dans le dernier tutoriel. Je vais donc cliquer dessus à travers de petits points et simplement cliquer sur Ajouter un environnement à la scène. C'est juste un environnement couvert , rien de spécial, mais cela ne fera que rendre les choses un peu plus belles pendant notre séjour. OK, donc la prochaine chose que je veux faire est de cliquer sur corps de ce personnage en trois D et d'enregistrer la branche telle qu'elle apparaît. Je vais l'enregistrer dans le dossier du didacticiel, et je vais probablement l' appeler un personnage FBS D'accord. Alors maintenant je l'ai fait. Je vais ouvrir cette scène, et nous allons réinitialiser la transformation puisque nous l' avons configurée dans une autre scène. Les choses vont un peu mal ici. Je vais donc simplement cliquer sur le personnage et descendre pour le transformer. Il suffit de cliquer sur ce petit bouton rond qui ressemble à une actualisation. Et nous y voilà. OK, donc je vais aussi le renommer, quelque chose comme personnage FPS, comme le nom de la scène. C'est sympa et facile. Et je vais juste revenir dans le monde, et je vais probablement le supprimer parce que je ne sais pas, il ne vous le renomme pas et je n'aime pas ça Donc, il suffit de le déposer, et je vais le remettre à peu près là où il était. Assurez-vous que c'est dans la scène. D'accord ? Maintenant, nous pouvons revenir ici et commencer à travailler. OK, donc la première chose que je veux faire est de diviser la vue en deux afin que nous puissions commencer à configurer nos animations. Je vais passer à celui du bas, et je vais cliquer sur Aperçu sur la caméra pour que, lorsque nous réalisons nos animations, nous puissions que, lorsque nous réalisons nos animations, voir ce que nous faisons. Je vais ajouter un nœud ici. Nous voulons rechercher un nœud trois D, juste un vieux nœud trois D. Et je vais juste renommer Weapons Underscore Manager Nous y ajouterons un autre enfant. Ce sera un autre nœud 3 D. Et je l' appellerai probablement FPS Underscore rig C'est ici que nous allons placer les modèles d'armes réels et les animer. J'ai donc quelques modèles de Kenny. Il a toutes les bonnes choses, donc je vais créer un lien vers son site Web ci-dessous si vous en avez besoin. Vous pouvez simplement en faire glisser un peu. Cela n'a pas vraiment d'importance pour cette démonstration. Je vais chercher un pistolet et un peu comme un fusil automatique. Et une autre pour faire bonne mesure également. Celui-ci fera l'affaire. Très bien, ils sont juste assis en plein milieu de notre scène Nous allons donc en quelque sorte tous les sélectionner et les pousser jusqu'aux pieds, là où ils sont hors de vue de la caméra. Et maintenant, nous devons ajouter un lecteur d'animation. Je vais donc appuyer à nouveau sur Ajouter un nœud et cliquer sur le lecteur d'animation. Blaster N activate est donc le premier. Je vais saisir la position dans laquelle ils se trouvent actuellement comme position de départ de l'activation, et je vais également les rendre tous invisibles et activer cette visibilité lorsque je commencerai à saisir cette animation Et je vais juste en parler là où je pense qu'il devrait être et le saisir. Cool. Je vais le raccourcir un peu. Ça a l'air correct. Parfois, vous allez juste jouer avec eux jusqu'à ce que vous obteniez quelque chose que vous aimez. Je voudrais que ce soit un peu plus rapide, mais j'ai remarqué qu'il tournait comme un fou, alors j'ai juste dû me contenter de trouver le point exact Et j'aime bien le spin interview, alors j'ai fini par le remettre dedans une fois que je l'ai corrigé. L'essentiel à retenir ici est que les images de début la désactivation doivent être les mêmes que les images de fin de l'animation d'activation Donc je vais juste les saisir, puis je vais tout remettre là où il était. Tant que c'est hors de vue et n'est pas visible sur le modèle, vous devriez être bon. Nous ne voulons pas dessiner une ombre lorsqu'elle n'est pas active, alors assurez-vous simplement de désactiver cette visibilité au fur et à mesure qu'elle descend et nous la saisirons Vérifiez simplement vos animations au fur et à mesure, pour vous assurer qu'elles vous plaisent. OK, donc pour le prochain tournage, probablement l' animation la plus importante que vous allez faire, assurez-vous simplement de faire attention à tout. Je pense qu'il vaut mieux que le pistolet se déplace abord vers l'arrière, puis qu'il tourne vers le haut, cela semble un peu plus crédible Je vais donc simplement les saisir, et les choses commenceront à bien paraître. Et vous n'avez pas vraiment besoin d' autant de temps que vous le pensez, même pour un tournage d'animation plus 0,2 seconde, c'est assez long. Et l'autre point essentiel à retenir, c'est que je vais utiliser le lecteur d'animation réguler notre cadence de tir. D'autres personnes procéderont différemment, et c'est très bien, mais assurez-vous de régler la longueur de votre piste de manière à ce qu'elle soit la même que le point final de votre animation. Vous ne voulez pas vous attarder moins, bien sûr, que vous ne le fassiez Mais assurez-vous simplement de savoir que le temps de piste, indiqué dans le coin supérieur droit, est le même que celui que vous souhaitez obtenir pour la cadence de tir J'ai l'impression que c'est obligatoire dans tous les jeux indépendants où il n'y a pas de véritable plate-forme Il n'y a que des armes flottantes. Vous devez faire tourner l' arme pour la recharger. Si vous ne le faites pas, vous n'êtes pas un vrai Indy, un développeur acharné. C'est donc ce que nous allons faire ici. OK, donc le prochain est le manque de munitions. C'est ce qui va se jouer lorsque le pistolet n'aura plus de munitions et qu'ils ne pourront plus se recharger Nous allons juste faire des allers-retours. Euh, c'est simple et sympa pour qu'ils puissent voir que ça ne se déclenche pas vraiment. Je ne vais pas mettre de son là-dedans. Je crois que dans un précédent tutoriel pour Gatto 3.5, j'ai ajouté des effets sonores et des effets de particules Mais je vais aller plus loin, donc je vais juste faire ce shake, juste pour qu' donc je vais juste faire ce shake, juste pour il soit clair et visuellement clair que nous ne sommes pas en train de charger. D'accord. Voici donc les cinq animations que je veux pour chacune de mes armes. Je vais juste passer à autre chose maintenant et installer ça sur les deux prochaines armes. Je vais accélérer les choses pour que vous n'ayez pas à me surveiller, et je vous verrai lorsque nous mettrons en place la ressource pour gérer tout cela. OK, donc tout est prêt. Maintenant, je vais fermer tous ces dossiers pour qu'ils soient un peu plus lisibles, et je vais créer une ressource. Je vais donc cliquer avec le bouton droit de la souris ici et ajouter un script. Je vais donc passer à New and script. Nous n'allons l' ajouter à aucun nœud, donc c'est ainsi que nous allons devoir procéder. Eh bien, je vais appeler cette arme une ressource de soulignement Et là où il est écrit « extends nod », je vais le supprimer et le remplacer par resource. Et classez le nom en trait de soulignement pour que nous puissions le trouver facilement. Je vais appeler mine weapons resource, et je l'ai mal orthographié, donc je vais revenir ici et corriger cela. OK, ajoutons donc quelques variables. En fait, une ressource est généralement composée d'un grand nombre de variables d'exportation, et elle peut contenir des fonctions, mais les s ne seront que des variables. Le premier est donc évidemment le nom de l'arme sous forme de chaîne. Et la liste des cinq animations que nous avons mises en place. Je vais donc leur le nom de l'animation, du soulignement et du NIM N'hésitez pas à le copier ou à faire votre propre travail. Je n'ai pas vraiment envie d'écrire des animations. Il y a beaucoup de lettres. Alors rechargez, soulignez et NIM. Et ce sont toutes des ficelles, d'ailleurs. Nous allons donc faire l'export ici. Pas de changement Assurez-vous d'essayer de les rendre aussi proches que possible de ce que vous avez réellement nommé pour les animations. Sinon, les choses peuvent devenir un peu confuses lorsque vous avez beaucoup d'animations en cours. De toute évidence, il existe des arguments en faveur de l'utilisation de différentes méthodes pour suivre toutes ces données. Vous pouvez utiliser un fichier JSON. Vous pouvez utiliser un fichier CSV. Cela dépend du nombre d'armes présentes dans votre jeu et du nombre d' actions différentes disponibles. Nous faisons donc en sorte que cela reste simple avec la ressource. C'est agréable et facile à configurer de cette façon. L'autre ensemble de variables dont nous avons besoin est évidemment les munitions Les munitions actuelles sont la quantité que vous pouvez tirer, les munitions de réserve sont la quantité à partir de laquelle vous pouvez vous recharger Et j'aime bien l'appeler magazine. Il s'agit de la quantité que vous pouvez recharger lorsque vous appuyez sur le bouton de recharge, la quantité maximale que vous pouvez Et le maximum est le montant maximum que vous pouvez avoir en réserve OK, donc, et je vais aussi simplement ajouter une variable Autofre, Autonderscore fire as Autonderscore fire as OK, ce sont toutes les variables dont nous avons besoin pour le moment. Nous allons ajouter à cela au fur et à mesure, mais cela suffira pour le moment. Je vais également descendre et créer un dossier appelé Weapon Resources. Et dans ce dossier, je vais juste cliquer avec le bouton droit sur Nouvelle ressource. Descendez et cherchez une ressource d'arme dans la liste, une ressource d'arme. Vous allez voir que j'en ai un vieux là-bas. C'est parce que j'y ai travaillé plusieurs fois. OK, donc je vais juste les nommer exactement de la même manière que les modèles d'armes réels juste pour que je sache ce qu'ils sont beaux et faciles à suivre. Et vous verrez que nous avons notre première installation ici. Nous avons tous ces variables ici. Je vais juste les taper. Le nom du blaster N, je vais le copier, et je vais juste redescendre. Maintenant, le plus important est que lorsque vous insérez ces animations, assurez-vous qu'elles correspondent parfaitement au nom de l'animation. J'ai presque mis un trait de soulignement là-dedans. Je n'en ai pas besoin Il y a un espace. Ils doivent donc correspondre exactement à vos animations. Si vous rencontrez des problèmes ultérieurement et que les animations ne fonctionnent pas, c' est peut-être parce qu'il y a un nom. Il y a un faux nom. Vous recevrez une erreur dans le débogueur, mais cela ne fera pas planter le jeu Vérifiez donc cela si vous rencontrez des problèmes. Ensuite, configurez simplement votre arme pour les munitions que vous voulez en vous assurant que toutes mes animations sont cochées Et donc, oui, peu importe l'arme que vous fabriquez, vous savez, réglez les munitions actuelles, les munitions de réserve, le chargeur Je l'ai déjà dit, c'est le montant maximum que vous pouvez recharger, et le maximum est le montant que vous pouvez garder en réserve, le montant maximum que vous pouvez garder en réserve. Ce sont donc les noms de variables que j'utilise. J'espère que cela a du sens. Je vais passer en revue et créer le reste de ces ressources. Je vais parcourir cette section rapidement, pour que vous n'ayez pas à me regarder les créer. OK, maintenant que nous les avons, nous pouvons commencer à configurer notre gestionnaire d'armes. C'est là que la magie opère, non ? Nous allons donc ajouter un script au gestionnaire d'armes. On peut l'appeler gestionnaire d'armes. C'est très bien Il étend le nœud 3 D. C'est tout à fait normal également. OK, nous avons donc besoin de quelques variables pour que cela fonctionne. La première chose que nous voulons faire est de sortir Animation Player. Je vais donc cliquer avec le bouton droit sur Accéder à votre surnom sur le lecteur d'animation, et je vais appuyer dessus sur le lecteur de soulignement d'animation On Redi Var Et j'écrirai get underscore node et guillemets, puis je ferai simplement glisser le nœud dessus La variable suivante dont nous avons besoin est l'arme actuelle. Il s'agit de la variable sur laquelle nous effectuons tous les appels. Et la variable suivante sera le snack d'armes, qui sera simplement un ensemble de toutes les armes dont nous disposons actuellement dans le jeu. Donc, si vous prenez une arme, elle est mise dans la pile. OK, nous avons donc indicateur d' arme qui sera juste une variable pour suivre le réseau. Ensuite, nous avons l'arme suivante, qui sera une ficelle que nous tiendrons lorsque nous changerons d'arme, n'est-ce pas ? Nous avons maintenant une liste d'armes, qui sera un dictionnaire que nous pourrons utiliser pour suivre toutes les armes disponibles dans le jeu, même si nous ne les détenons pas. Et nous allons également avoir une variable d'exportation , qui sera les ressources. Je vais juste nommer mes ressources d' armes de soulignement , et ce sera un tableau, et voici l'astuce entre crochets puis tapez ressource d'arme dedans, et cela nous permettra simplement de faire glisser ces ressources d'armes dans le tableau, c'est sympa et pratique Ensuite, exportez des armes à démarrage variable, qui seront simplement un tableau de toutes les armes disponibles au début du jeu ou lorsque vous les chargez. OK, nous pouvons donc commencer à le configurer. Je vais ajouter trois éléments au tableau et simplement faire glisser ces ressources. Vous pouvez simplement les déposer. L'ordre n'a pas vraiment d'importance. OK, puis nous reviendrons, je cliquerai à nouveau dessus, et j'ajouterai deux armes de départ. Je ne ferai pas les trois car j'en garderai une pour vous montrer comment prendre une arme dans un prochain éditorial. Mais pour l'instant, je veux vous montrer comment changer d'arme. Nous allons donc commencer par cela. Je vais ajouter Blaster D et Blaster N, je crois. OK, alors assurez-vous que tout est aligné et que vous en êtes satisfait, et nous allons commencer à configurer le reste du script. C'est bon. Nous allons donc avoir besoin de quelques fonctions. Je vais les taper maintenant. abord, nous voulons initialiser, puis nous aurons besoin d'une entrée, et je vais juste écrire pass, et nous les expliquerons dans une seconde Ensuite, nous allons avoir besoin de changer d'arme de soulignement, qui sera la principale pour changer d'arme et pour sortir également Et ce sera à ce moment-là que nous sortirons de l'arme. Et je pense que je vais juste mettre changement d'arme au bas de ce script. D'accord. Nous allons également avoir besoin d'un ready, et nous allons simplement appeler initialize Ce sera la première chose que tu appelleras. C'est ainsi que nous entrons par le biais de notre machine étatique, car c'est essentiellement ce qu'est une machine étatique qui contrôle l' état actuel des armes dans lequel nous nous trouvons. OK, donc nous allons appeler la sortie avant de changer d'arme pour confirmer que nous ne sommes pas au milieu d' autre chose ou quoi que ce soit d'autre. Tout ce que vous devrez valider et saisir sera ce que nous appellerons lorsque nous entrerons dans la prochaine arme. Nous pouvons donc, vous savez, jouer la bonne animation. Nous pouvons réinitialiser certaines variables si nous devons mettre à jour les munitions du Hud ou quoi que ce soit D'accord, donc pour notre initialisation, nous allons vouloir transmettre les armes de départ Et de toute évidence, il va être diffusé sous réserve de disponibilité. Ça va être un tableau. Nous allons transmettre la variable d'exportation start weapons, et nous pourrons commencer. La première chose que nous voulons faire est donc de créer notre liste de dictionnaire de toutes les armes présentes dans le jeu. Donc, pour expliquer rapidement le tableau de ressources en armes que nous avons configuré ci-dessus ne sera pas vraiment utilisé, sauf pour créer ce dictionnaire. Nous pourrions simplement avoir un dictionnaire et ignorer complètement le tableau, mais nous voulons faire une boucle pour arme dans les ressources d'armes, dans liste des armes, puis nous mettrons entre crochets le point de soulignement de l' arme, et nous le définirons comme étant égal à l'arme D'accord. Et cela créera notre dictionnaire afin que nous puissions nous y référer au fur et à mesure que nous le parcourons. OK, la prochaine chose que nous voulons faire est passer en revue nos armes de départ. Donc, facturez et démarrez les armes, le soulignement des armes, le point de soulignement, le pushback I. Donc, nous allons juste ajouter toutes les armes de départ notre gamme Notre pile d'armes ne sera donc qu' une chaîne de référence à chaque arme que nous pourrons appeler avec ce dictionnaire. Prêt Nous voulons donc attribuer à arme actuelle la même valeur que la liste des armes Wear brackets Wear brackets Weap Stack Garacket zéro Ce ne sera donc que la première arme de la pile. Ce sera la toute première arme que nous trouverons. Ensuite, je vais appeler Enter. D'accord. Il n'y a donc pas grand-chose à faire pour le moment lorsque nous appelons Enter. Tout ce que je peux vraiment penser à faire, c'est de jouer cette première animation. Je vais donc appeler le joueur d'animation point, et je vais juste transmettre le point actuel de l'arme Activate M. Et encore une fois, juste un rappel pour m'assurer que vous avez le bon nom de variable, et que vous avez également le bon nom d'animation parce que j'ai découvert avec cette façon de faire référence aux choses, cela ne va pas, vous savez, préremplir les variables ou quelque chose comme ça. Il ne vous dira donc pas que c'est faux tant que vous n'avez pas lancé le jeu. Je vais donc lancer le jeu ici, et je peux dire que j'ai bien parce que l'arme est apparue et joue. OK, passons à autre chose. Et en fait, pour changer d'arme, nous allons avoir besoin de configurer certaines entrées. Je vais donc passer aux paramètres du projet, et je vais ajouter quelques actions ici. Nous allons donc l'appeler Weapon Underscore up. Ensuite, nous allons ajouter cela, et je vais souligner l'arme vers le bas. Et je vais les créer de haut en bas sur mon clavier, juste parce que ma souris est un peu cassée en ce moment. Hum, d'accord, donc je vais aussi ajouter le shoot et le reload. Je vais les régler sur le bouton gauche de la souris, et je reviendrai ici, et j'ajouterai également le rechargement Et je vais régler ça sur R. D' accord. Maintenant que nous l'avons, nous pouvons ajouter la fonction d'entrée à notre script. Je vais donc passer en dessous de Ready, et je vais juste entrer un peu, et je vais taper Funk Underscore input event Et nous pouvons vérifier si point de l' événement correspond à l'arme pressée par action haut. Nous allons simplement afficher notre indicateur d'arme et nous l'incrémenterons Je vais utiliser la fonction MIN Je vais donc choisir entre le plus petit des deux indicateurs d' arme plus un ou la taille de la pile d'armes moins un Nous ne voulons donc pas dépasser la longueur du tableau. C'est pourquoi je le fais de cette façon. Ensuite, j'appellerai Exit, et je devrai transmettre la pile d'armes. Indicateur d'arme entre crochets. D'accord ? Et nous allons avoir une petite erreur ici car exit n'a pas trop d'arguments pour une variable. Assurez-vous donc de descendre ici où il est écrit exit et ajouter simplement le soulignement de l'arme suivante, et nous dirons que c'est une chaîne pour ne pas faire d'erreur D'accord. Je vais donc ajouter exactement la même chose pour Arme Down. Donc, si le point de l'événement correspond à une action pressée, arme baissée. Je vais régler l'indicateur d'arme. Et cette fois, je vais utiliser Max. Ce sera donc soit un indicateur d' arme moins un, soit zéro, donc nous ne pouvons pas descendre en dessous de zéro. Ensuite, j'appellerai à nouveau Exit, et je transmettrai exactement la même chose. Je vais donc simplement copier ceci ci-dessus et le coller dedans. OK, alors maintenant, dans notre sortie, nous pouvons commencer à travailler là-dessus. Je vais donc simplement supprimer la passe, et je vais vérifier si l'arme suivante n' est pas égale à l'arme actuelle, pointillé sur le nom de l'arme Nous voulons nous assurer de ne pas adopter la même arme. Si le point G du joueur d'animation est l'animation actuelle, n' est pas égale au point d'arme actuel, désactivez Vous pouvez effectuer d' autres vérifications ici. C'est à cela que sert la fonction de sortie. Toute sorte de vérification visant à s'assurer que vous pouvez réellement changer d'arme. Je vais donc vérifier que le lecteur d'animation n'est pas déjà en train de jouer au point de désactivation actuel de l' arme Et je jouerai si tout cela est vrai, je jouerai à l'animation de désactivation, et je mettrai l'arme suivante le même score que l'arme suivante, comme nous l'avons indiqué dans la fonction OK, alors comment pouvons-nous réellement changer d'arme ? Eh bien, nous allons utiliser un signal de notre lecteur d'animation. Je trouve que c'est un bon moyen de contrôler le rythme des choses et de s'assurer que nous ne spammons pas les animations L'animation terminée est donc le nom du signal que nous voulons connecter. C'est le deuxième ici. Mais il suffit de double-cliquer dessus, puis de cliquer sur Weapons Manager, et le nom NIM sera variable Nous voulons donc prendre cette variable et vérifier si elle est égale au point d'arme actuel pour désactiver le NIM Donc je vais juste le taper maintenant. Si A Nymname est égal au point d' arme actuel, désactivez Underscore NIM, alors Oh, alors Oh OK, donc Tim Colin change d'arme, et nous allons passer une ficelle. Je vais juste taper ceci ici, le nom de l'arme, chaîne majuscule, et changer d'arme, nous passerons à l'arme suivante. Bien sûr, vous pouvez facilement y accéder changeant d'arme, mais je pense que c' est un peu plus sûr. Maintenant, en théorie, nous avons déjà fait toutes nos vérifications, donc nous savons que nous pouvons passer à cette arme. Changer d'arme peut donc être simple et agréable. Je vais supprimer le pass ici et l' arme actuelle est égale à la liste des armes, au support, au nom de soulignement de l'arme Et ce sera tout. Et évidemment, nous allons nettoyer l'arme suivante pour qu' elle soit vide afin que cela ne pose aucun problème, et nous appellerons la fonction Enter, et nous passerons à la suivante. Maintenant que tout est configuré, nous pouvons exécuter et faire un test. Et comme vous pouvez le constater, lorsque j' appuie sur le bouton un ou deux, j'échange des armes. Maintenant, je ne devrais pas pouvoir échanger d'arme lorsque je spamme le bouton deux. Si j'essaie d'augmenter continuellement, cela devrait simplement appeler exactement la même variable pour l'indicateur d'arme, puis évidemment la même, donc ça ne marcherait pas. C'est donc comme ça que tu le fais. Déjà, les gars, j'espère que vous avez trouvé cela utile. C'est la première leçon d'une dizaine que je prévois de cette série hebdomadaire sur la création un système de gestion d'armes FPS. Il s'agira d'une série de didacticiels complets lesquels nous vous emmènerons de la configuration des ressources d'armes et de la machine d'État à la mise en place d'un système d'armes FPS complet. 4. Créer un câlin rapide et prendre des photos et recharger: Bienvenue dans ce troisième tutoriel et mise en place d'un système de gestion des armes FPS. Je suis Isaac de Chef Games et Today. Nous allons installer un centre rapide et sale pour garder une trace de nos munitions et des armes que nous avons actuellement en notre possession Ensuite, nous allons configurer notre parachute et nos fonctions de rechargement. Vous verrez également que la fonction de changement d' arme sera un peu différente dans ce didacticiel en particulier Ignorez simplement cela et conservez le code que vous avez du didacticiel précédent. OK. Donc, la première chose que nous voulons faire est d'ajouter quelques fonctions. Nous allons ajouter la fonction shoot. Et je vais juste mettre un laissez-passer ici et nous allons ajouter le rechargement de la fonction, et j'y mettrai un laissez-passer également Si vous vous souvenez de notre dernier tutoriel, nous avons configuré les entrées correspondantes. Nous voulons donc que si l'événement est pressé, tirez. Nous allons tirer, et si vous appuyez sur le point d' événement, rechargez, nous allons recharger Donc, je n'ai pas reçu ces entrées, vous avez juste les paramètres du projet, et sous la carte d'entrée, tapez simplement shoot dedans et appuyez sur Ajouter, et je vais le mettre sur le bouton gauche de la souris. Ensuite, j'ajouterai le rechargement. Il vous suffit donc d'appuyer sur Ajouter et d'appuyer sur le petit bouton plus, et je vais mettre le mien sur R OK, donc je vais juste mettre ces animations, donc je vais appeler le joueur d'animation point play, et je vais transmettre le point d'arme actuel Shoot Underscore NIM Si vous vous souvenez, nous avons ces ressources avec l'animation stockée sous forme de variables. Ma variable est donc shoot et NIM. Si ce n' est pas le cas, transmettez simplement l'animation que vous souhaitez jouer. Même fonction exacte ci-dessous, animation par points, rechargement actuel des points de l'arme Et nous allons appuyer sur Play , et vous verrez immédiatement que le pistolet joue cette animation de tournage. Et lorsque vous appuyez sur R, il se recharge, c'est exactement ce que nous voulons Donc, tout fonctionne. Si cela ne fonctionne pas, vérifiez vos variables d'animation. Je vais mettre en place un Hud pour que nous puissions, vous savez, suivre ce que nous faisons Je vais donc créer un tas de signaux ici. Le premier signal est le changement d'arme. Le deuxième signal est Update the Ammo. Et le troisième signal est de mettre à jour la pile d'armes. Je vais avoir besoin de créer une couche Canvas ici. Je vais le déposer en dessous du nœud parent. Nous allons ajouter quelques boîtes en V. Et juste en dessous, nous ajouterons des cases H, puis nous aurons besoin de deux étiquettes. Maintenant, cette première étiquette sera simplement le nom du domaine que nous suivons. Je ne vais donc pas m' inquiéter de le renommer, mais je vais le renommer en arme actuelle Et dans cette étiquette supérieure, je vais juste taper le texte « arme actuelle ». Je vais le dupliquer. Oui, renommons ce champ munitions avec deux points puis un espace, puis renommons cette étiquette juste en dessous, qui ne contient rien, en munitions actuelles contient rien, en Encore une fois, c'est la même chose. Retapons le texte pour qu'il soit « pile d' armes » et renommons étiquette située en dessous en « pile d'armes Et nous allons créer un nouveau script sur la couche Canvas dans le dossier du didacticiel. C'est très bien. Je vais appeler mien Hud et nous allons ajouter ces trois nœuds Donc, chez On Ready VA, nous avons le même label d' arme actuel, et je vais juste ajouter ça. Vous verrez la nouvelle émission à ce sujet. Je ne l'ai pas remarqué quand je le faisais, donc je devrai le réparer plus tard. Nous avons obtenu l'étiquette de munitions actuelle d'OnReadyVA, et nous la faisons glisser J'ai le même problème avec le nouveau ignore cela. Supprimez-le si cela vous arrive aussi, ajoutez la pile webping actuelle de onreadyv et faites également glisser ce nœud vers l' OK. Alors maintenant, connectons les trois signaux que nous avons créés. Nous allons double-cliquer dessus, puis cliquer sur la couche Canvas. OK, donc maintenant nous avons les trois signaux ici. Nous allons taper quelques variables ici. Nous voulons que le nom de l'arme sur l' arme du gestionnaire d' armes soit changé. Et la fonction que nous allons appeler est texte de soulignement actuel de l'étiquette de l'arme, et nous allons simplement transmettre le nom de l'arme OK, donc pour la mise à jour de la pile d'armes, nous allons faire quelque chose d'un peu différent. Nous transmettrons la pile d'armes, et nous saisirons le texte actuel défini par des points de la pile d' armes, et nous ne transmettrons rien pour qu' elle soit éliminée. Et pour moi, dans Weapons Stack, parce que ce sera un tableau, nous serons le texte actuel de la pile d'armes à points plus égal, puis nous mettrons une nouvelle ligne et nous ajouterons I, qui sera juste le nom de l'arme. Et pour les munitions mises à jour, je vais utiliser le point actuel de l'étiquette Amo Définissez le texte, et j'ai quelques crochets ici. STR est la fonction permettant de transformer un entier en chaîne. Nous allons passer. Amo l'a presque oublié, et ce sera aussi un tableau. Je vais donc taper Amo entre crochets zéro. J'ajouterai une barre oblique, puis je ferai plus une barre entre crochets pour munitions STR Ce seront donc nos munitions actuelles et nos munitions de réserve. Et assurez-vous d'avoir vos crochets ici. Cela peut être un peu déroutant lorsque vous ajoutez toutes ces fonctions. OK, nous allons donc revenir à la pile d'armes, et nous devons réellement émettre ces signaux. Donc, lors de l'initialisation, nous voulons mettre à jour la pile d'armes, et nous devons la transmettre au Hud Et lorsque nous entrerons, nous émettrons le signal que l'arme a changé avec le nom actuel en pointillé de soulignement de l' arme Et nous devrons également mettre à jour les munitions, car nous avons changé d'arme, et il faudra qu'il s'agisse d'une matrice, point d'arme actuel, virgule, point d'arme actuel , point d'arme OK. Voici donc ces deux variables dans ma ressource. Si vous savez utiliser ces ressources, il vous suffit de transmettre la variable que vous utilisez. De toute évidence, cela va se bloquer à cause des nouvelles fonctions apparues lorsque j'ai commencé à les faire glisser Je vais les supprimer, les supprimer et relancer le jeu. Et nous y voilà. Nous pouvons voir qu'il est écrit Blaster D, AO 30 ou 60, et la pile d'armes, c' est-à-dire les deux armes que nous avons en notre possession, Blaster D et Blaster N. Et quand je change, l'IO est mis à jour et le nom de l' arme est mis à jour OK, maintenant nous pouvons commencer à configurer les calculs pour le tournage et le recharger Nous allons passer à la fonction de tir, et nous allons simplement ajouter notre premier type de condition si AO actuel de l'arme n'est pas égal à zéro, deux points, puis nous allons passer à la liste déroulante. Et nous allons en fait ajouter une deuxième condition après cela. Nous pourrions, bien sûr, le faire en un seul, mais je préfère ou je pense que c'est plus lisible de l'avoir en deux dans ce cas. Vous pouvez faire ce que vous voulez. Je vais taper « aucun lecteur d'animation n'est en train de jouer », donc nous ne voulons pas tourner alors que le lecteur d'animation joue déjà. En d'autres termes, nous ne pouvons pas interrompre une animation pour la filmer. Cela permettra donc également d'appliquer la cadence de tir définie par l'animation, puis je ferai jouer des points à mon lecteur d'animation. Et nous devrons également réduire nos munitions. Les munitions actuelles de l' arme seront donc égales à une, et nous émettrons ce signal pour mettre à jour les munitions Et je vais juste revenir à la fonction d' entrée et simplement la copier parce qu' elle est assez longue. Très bien. Passons donc à la partie, et vous verrez que maintenant nos munitions diminuent et que notre lecteur d'animation joue Lorsque nous atteignons zéro, rien ne se passe. L'autre chose que nous voudrions peut-être configurer est AutoFre. Voici le signal indiquant que l' animation du lecteur d' animation est terminée. Et je vais taper I Le nom de l'anime est égal au point de tir NIM actuel de l'arme et au point d'arme actuel Auto Vous vous souviendrez donc que dans nos ressources, nous avons une variable automatique Fire. Assurez-vous que c'est égal à vrai. Ensuite, nous allons vérifier si le point d'entrée correspond à action enfoncée et à la prise de vue. Et ensuite, si c'est vrai, nous allons jouer l'animation du tournage. À la fin de l'animation, si le déclenchement automatique est réglé sur true, nous exécuterons à nouveau la fonction. Donc, comme vous pouvez le constater, cela fonctionne. Alors que je maintiens le bouton de tir enfoncé, cette animation du Blaster D se répète OK. Alors maintenant, que devons-nous faire si nous avons plus de munitions à recharger Je vais donc taper se reload, et je vais descendre pour recharger OK, pour le moment, nous ne faisons que jouer l'animation. Nous devons donc faire encore quelques choses. Allons y jeter un œil. Nous avons des munitions de réserve, un chargeur, et ce sont les deux variables avec lesquelles je vais jouer dans ma ressource Je vais donc vérifier si les munitions actuelles de l'arme sont égales à celles du chargeur à points d' armes actuel, c'est-à-dire que nous n'avons pas besoin de munitions, je vais juste m'en remettre Rien ne se passera si tu as plein de munitions. Ensuite, je vais vérifier que si le lecteur d'animation ne joue pas, je ne veux pas le faire si nous sommes en train de jouer quelque chose. Je ne peux pas m'interrompre pour recharger c'est surtout un choix de design Il n'est pas nécessaire qu'il en soit ainsi. Ensuite, je vais aussi avoir une autre condition, si les munitions de réserve de points d'arme actuelles ne sont pas égales à zéro Nous ne pouvons pas recharger si nous n'avons pas de munitions, alors je les rechargerai OK, ce sont donc toutes les conditions dont nous avons besoin. OK, donc c'est comme ça que nous allons procéder. Nous allons taper var reload amount is equal to, et nous utiliserons le mingan Je vais l'élargir un peu parce que ça va être assez long. Tapez Min. Et cela peut prendre n'importe quel nombre de variables. Nous allons donc tous les taper ici. Ce sera donc le magazine à points d'armes actuel , moins les munitions actuelles Pensez donc à cela comme si nous avions un chargeur de dix, alors que nous en avons actuellement trois dans nos munitions actuelles Le chiffre serait sept, soit la quantité de munitions dont nous avons besoin pour remplir nos munitions actuelles jusqu' au niveau de notre chargeur OK, le prochain sera le magazine Wapon Dot actuel, qui serait dans mon exemple précédent Et le troisième sera actuellement WWpon Reserve Ammo. Ce sera donc le plus petit de ces trois chiffres. Dans la plupart des cas, ce sera soit le moins élevé des trois. Donc, si vous n'avez pas assez d'AO pour compléter votre AO actuel, vous allez simplement prendre la quantité de munitions de réserve Si vous êtes à zéro, alors, vous savez, chargeur à points d'armes actuel moins le point d'arme actuel Les munitions actuelles peuvent être les mêmes que le chargeur à points d' armes actuel Maintenant que j'y pense, vous pouvez probablement simplement faire les deux Quoi qu'il en soit, il faudra toujours choisir la moindre de ces trois situations. Quoi qu'il en soit, d'accord, donc ce que nous voulons faire avec ça c'est taper le point actuel de l' arme, Amo actuel. Et je vais essayer d'égaler le point actuel de l'arme, l'Amo actuel. J'aime que cela soit écrit ici juste pour que ce que je fais soit clair. Point d'arme actuel : munitions actuelles plus quantité de rechargement, et point d'arme actuel. Les munitions de réserve sont égales au point d'arme actuel, les munitions de réserve OK. Enfin, nous voulons émettre ce signal pour mettre à jour Amo . Sinon, nous voudrons jouer l' arme actuelle sans animation Amo. C'est donc l'animation que j'ai stockée dans ma variable hors animation de ma ressource. OK, alors testons ça. Je vais juste vider le clip sur celui-ci, et il devrait en recharger 30, et mon animo de réserve est de 30, et je vais juste faire quelques tests différents pour m' assurer que nous sommes satisfaits du chiffre qui sort toujours Donc 25, il m'en faut cinq. Ouaip. OK, il m'en faut dix. Ouais. OK, c' est logique, et je vais le réduire à dix. Je devrais aller jusqu'à 20, et je le fais. Et maintenant je n'ai plus de munitions Emmy. Ce qui se passe, c'est alors que la sortie d'une animation est jouée. Et pareil quand j'arrive à la fin. Je vais aussi tester celui-ci, juste pour m'en assurer. Et on dirait qu'il se recharge normalement. OK, c'est ainsi que vous configurez le rechargement, le tournage et le rechargement des animations ainsi que tous les calculs nécessaires au suivi des munitions Le prochain, nous allons examiner le scan HIT. Nous allons donc commencer à être capables de tirer avec notre arme, je suppose que vous pourriez dire, sans infliger de dégâts. Hum, une dernière chose que je voulais faire avant de quitter celui-ci était simplement d'ajouter un site parce que nous n'en avons pas, donc vous ne savez pas vraiment où vous photographiez. Je vais donc cliquer dessus et ajouter une texture à la couche Canvas, et je vais simplement appeler ce site principal. Et j'ai quelque chose qui s' appelle Cross Air One dans les modèles de HUD Assets j'aurai sélectionné le site principal, je vais cliquer sur la petite ancre Lorsque j'aurai sélectionné le site principal, je vais cliquer sur la petite ancre en haut, sélectionner un recto complet et faire glisser cette texture vers l'emplacement de texture de cette épave de texture Vous remarquerez qu' elle est très étirée Ce que nous voulons faire, c'est changer le mode d'étirement pour rester centré et nous assurer que l' ancre est sélectionnée. Et maintenant tu verras que quand je courrai, c'est au centre. OK, c'est ainsi que vous configurez le tournage et le rechargez dans Gadot C'est juste l'animation et, vous savez, un petit bruit rapide et sale pour suivre tout cela OK, les gars, c'est tout ce que j'ai à vous montrer aujourd'hui. Nous avons créé un petit masque rapide et sale qui peut nous aider à garder trace de nos munitions et des armes que nous avons actuellement en notre possession Et nous avons également le début de notre tournage et de notre rechargement. La semaine prochaine, nous allons commencer à implémenter notre fonction de scan HIT, qui est vraiment excitante. C'est là que nous allons commencer à voir notre capacité à réellement filmer des choses. 5. Armes HitScan: Comment ça va, tout le monde ? Je suis Isaac de Shaft Games et aujourd'hui. Nous nous intéressons enfin aux armes à scanner à succès. Ceci fait partie de ma série de tutoriels FPS sur la création d'un système de gestion d'armes FPS. J'ai pensé que je pourrais prendre le temps de vous expliquer rapidement comment nous allons procéder pour ce hit Scan Weapon. Vous pouvez y parvenir de différentes manières, mais c'est ainsi que j'aime le faire. Dans Gadot 4, il existe ce que l'on appelle un paramètre de requête physique y trois D. Je pense que c'est le bon terme Et vous pouvez l'utiliser pour créer un raycast d'où vous voulez et où vous voulez Et ce que nous allons faire, c'est projeter depuis le centre de la caméra vers une plage déterminée. Et si ce rayon croise quelque chose, nous allons lancer un autre rayon depuis le canon de notre arme vers cet objet C'est une étape supplémentaire juste pour nous donner un peu plus de précision sorte que s'il y a quelque chose entre le canon, comme une boîte, que vous vous cachez derrière une sorte d'objet, vous ne pouvez pas simplement, vous savez, y jeter un coup d'œil et tirer Vous pouvez, bien sûr, simplement refondre directement depuis le centre de l'appareil photo et obtenir des effets assez similaires, bien sûr Et ce n'est pas ce que nous voulons atteindre ici. Nous allons donc faire deux refontes, et allons-y. Donc, la toute première chose que nous devons ajouter est un marqueur trois D. Il peut également s' agir d'un nœud d'un jour à l'autre. C'est très bien aussi. Je vais appeler cela un point de soulignement. Et le truc ici, c'est avec les animations. Nous allons déplacer cette balle pour qu'elle soit juste à l'extrémité du canon du pistolet. Je vais donc simplement le manipuler dans la bonne position pour toutes mes armes et saisir cette image dans mon lecteur d'animation. Vous verrez que je l'ai mis là, et j'ai appuyé sur le bouton principal de mon Blaster D. Ainsi, lorsque les armes sont activées, ce marqueur est mis en position. Et pour la désactivation, je vais appuyer sur la réinitialisation et participer Ce n'est pas vraiment nécessaire, mais je pense que c'est un peu mieux ainsi, juste au cas où il y aurait un problème. Je vais passer à Blaster I, et je ferai exactement la même chose Je vais m'y prendre rapidement. Mais oui, pour chacune de vos armes, vous devez déplacer cette pointe devant le canon d' où la balle sortirait essentiellement. Et nous allons l' utiliser à la fois pour nos hits scans et pour nos projectiles OK, donc une fois que vous avez configuré vos animations, cliquez avec le bouton droit sur le point et sélectionnez Access est un nom unique Nous entrerons dans notre script de gestionnaire d'armes et nous saisirons onreadyv bullet, point de soulignement, nœud G égal, crochets, guillemets, puis le signe du pourcentage, puis le Si je le fais de cette façon, c' est juste au cas où vous voudriez déplacer les choses une fois que vous avez terminé, cela vous facilite vraiment les choses. OK, nous allons donc entrer dans notre script de ressources en armes, et nous allons ajouter quelques variables. La première chose que nous voulons, c'est un drapeau d'exportation, c'est-à-dire des drapeaux de soulignement d'exportation, et nous en ferons un en tant que hit scan et l'autre en tant que projectile, et nous l'appellerons type C'est donc vraiment une bonne chose. Cela nous donnera un recenseur que nous pourrons utiliser pour décider quel type d'arme tirer. La variable d'exportation suivante est la portée de l'arme, et ce ne sera qu'un entier. C'est assez simple, ça fera l'affaire. Ensuite, nous aurons également les dommages à l'exportation sous forme de nombre entier. Nous allons donc venir les installer. Je vais créer celui-ci ici, le Blaster D, une arme à scanner HIT, et pareil pour le Blaster I, et je vais leur donner une portée de 2000 pour Nous allons revenir à notre script d'arme et créer un énumérateur Ce sera entre trois. Nous allons faire scan nul et un projectile Et je pense que vous pouvez probablement voir où je veux en venir. OK, donc dans notre fonction de tournage, nous allons taper match. Type de point d'arme actuel, et nous aurons zéro au cas où il n'aurait pas été sélectionné. Je vais juste mettre une empreinte ici et dire quelque chose comme le type d'arme, non choisi, puis appuyer sur Scanner, et nous allons mettre une passe pour le moment, puis nous allons également mettre un projectile Et nous ferons exactement la même chose. Nous allons juste passer par là. La première chose que nous devons faire avant de commencer à effectuer notre hit scan, c'est d'obtenir un casting de notre caméra. Je vais donc créer une fonction appelée Get Camera Collision. Et nous allons commencer à travailler là-dessus. Nous allons simplement taper pass pour que je puisse configurer le reste de la fonction et prendre des photos. Je vais donc taper var collision de caméra égale collision de caméra G. Donc, pour la collision de caméra, nous devons avoir accès à notre caméra, afin que nous puissions simplement passer de la caméra va à la fenêtre G, obtenir la caméra trois D et la caméra retournera la caméra 3D active , qui sera celle que nous utiliserons dans la plupart des cas Ensuite, nous devons également connaître la taille de la fenêtre d'affichage afin de pouvoir projeter le raycast depuis le centre Nous allons donc obtenir viewport dot get size est la fonction que nous allons utiliser Et nous allons avoir un projet yigin égal à camera point par Et ce sera un point d'écran, qui sera notre fenêtre d'affichage divisée par deux, donc ce sera le centre, d'accord ? Et l'autre devra être Ray End. Et ce sera l'origine des rayons, verre, le projet de caméra y normal, et ce sera la fenêtre d'affichage divisée par deux, qui sera le centre, encore une fois, multiplié par le point d'arme actuel, la portée soulignée de l' arme C'est jusqu'où nous allons projeter notre ray cast. Nous aurons donc la variable suivante, qui sera une nouvelle intersection, et qui sera égale au paramètre de requête physique créé par trois points en D. Et nous allons prendre un vecteur de départ, qui sera notre origine de taux, un vecteur de deux, qui sera notre fin de taux. C'est nouveau et Dieu quatre. Je vais juste faire de l'espace en bas et l'élargir un peu. C'est donc une nouvelle fonction nous devons appeler lors du casting. La prochaine chose que nous devons faire est de simplement obtenir une variable pour l'intersection, et elle sera égale à. G world three D dot direct space state point Intersect R. Et cela nécessite maintenant un paramètre de requête de rayon physique trois D, donc nous allons passer dans notre nouvelle intersection Ensuite, ce que nous ferons, c'est que si le point d'intersection n'est pas vide, et que nous obtenons le point de collision, il sera égal à la position du point d' intersection. Ce sera donc le point mondial de la véritable collision. Sinon, nous allons simplement renvoyer le taux, ce qui n'est pas important pour le hit scan, mais ce sera important pour le projectile Gardez donc cela à l'esprit. Quoi qu'il en soit, nous renvoyons un vecteur trois, et ce sera soit le point que nous atteindrons avec notre caméra, soit simplement le point final. OK, nous pouvons donc revenir à nos occupations. Maintenant que nous avons atteint ce point, nous pouvons commencer à travailler sur notre Hit Scan. Nous avons donc la fonction. Appuyez sur Scan Collision. Et je vais juste taper pass dedans. Il faudra en fait une variable, qui sera le point de collision de la fonction de collision de la caméra. La direction du trait de soulignement B est égale au point de collision moins le point à puce. Obtenez l'origine du point de transformation globale et la normalisation du point Cela nous donnera donc la direction dans laquelle ce nouveau vecteur doit se déplacer et nous allons taper une nouvelle intersection. Ce sera assez similaire à celui ci-dessus, et ce sera égal à ce qu'il était auparavant, paramètre de requête physique à trois points D Create. Et le point From sera le point à puce Get Global Transform. Point ORGN. Et les deux points seront le point de collision plus la direction de la balle multipliée par deux. Tu lui donnes un petit supplément. La multiplication par deux, c'est à peu près pour aller un peu plus loin que ce dont vous auriez besoin. Parce que ce que j'ai découvert, c'est que si vous ne le faites pas, cette collision hit Scan n'enregistre pas toujours un résultat. OK, nous allons donc parler d'une collision avec un trait de soulignement, et nous allons obtenir trois points D directspac State point Intersect, ce qui prend un paramètre de requête physique y trois D, et nous allons passer à Maintenant, nous saurons si nous avons réellement blessé quelque chose. Nous allons donc y aller, en cas de collision de balles, imprimer, Hit, scanner, dégâts. Nous allons donc simplement l'imprimer. Nous savons que nous pouvons infliger des dégâts à ce moment-là. Je vais donc créer une fonction appelée Hit scan damage, et nous allons simplement la configurer pour qu'elle passe pour le moment, et nous allons configurer cette fonction, appeler cette fonction sous I but collision, juste pour qu'elle soit plus complète. C'est exactement la structure que nous voulons. OK, je vais arrêter ça et nous reviendrons dans le monde, reviendrons au trois D, et nous ramènerons le rédacteur Et je pense que la boîte sera la meilleure chose sur laquelle travailler. Interagissons donc avec cela. Je vais donc ajouter un groupe. Donc, si vous arrivez au nœud où se trouvent les signaux et que vous cliquez simplement sur la petite icône indiquant les groupes, exemple gérer les groupes tapez cible dans cette case ici et ajoutez. Sélectionnez l'objet physique, ajoutez-le, puis appuyez sur OK. Ajoutons un script. Dans le cadre du didacticiel. J'ai créé un nouveau dossier appelé world Underscore Objects. Et j'appelle le script Physics Target. Et ci-dessous, je vais juste dire, B Health, nous en donnerons environ cinq. Ensuite, nous allons créer une fonction appelée Hit Underscore successful. Essaie de l'épeler correctement. Si vous frappez avec succès, vous infligerez les dégâts. Ensuite, nous allons simplement perdre de la santé, moins les dégâts. C'est juste une question simple. Ensuite, nous vérifierons l'état de santé. S'il est inférieur ou égal à zéro, nous libérerons la clé. Joli et simple. Nous imprimerons également l'état de santé au fur et à mesure, afin de pouvoir nous assurer qu'il fonctionne. Bien, nous allons revenir au personnage du FPS. Et en dessous, là où se trouve notre peau touchée, nous passerons dans le collisionneur, qui est l'un des objets renvoyés par un rayon d'intersection Donc, Bullet Collision Dot Collision. Nous allons donc taper I collider is in group, et nous allons simplement taper Target and the collider point has method, et nous allons taper cette méthode avant qu' elle ne soit atteinte avec succès. Il est important de s' assurer que c'est correct. Sinon, cela ne fonctionnera pas. Il est également important de vous assurer de le faire au cas où vous n' auriez pas cette fonction sur l'objet que vous frappez. Dans le cas contraire, votre jeu va se bloquer. Et nous allons simplement taper les points de collision réussis et nous répercuterons dégâts du point actuel de l' arme Cool. OK, donc tout devrait se passer comme prévu. Nous devons juste nous assurer que nous arrivons à cette correspondance dans le parachute et que nous l' appelons sur la fonction Scan collision et que nous faisons passer la collision avec la caméra. Après cela, nous devrions être prêts à partir. Je n'ai vérifié ça qu'une seule fois. Oui, je pense que nous sommes prêts. Lancez le jeu. D'accord. Oup. Nous avons eu un accident. Oh, oui, d'accord, donc la santé est là, et j'ai écrit trop de scripts Dava, donc j'ai juste besoin de taper STR STR Health. D'accord. Et puis vous pouvez voir qu'il n'y en a plus. Et ça marche. C'est ainsi que vous configurez une arme de scan de la hanche. Génial Et il n' interagit avec rien d'autre. OK, c'est plutôt cool, mais nous ne pouvons pas toujours voir où nous tournons . Ce serait donc bien de le faire. Revenons donc à notre projet, et nous allons simplement créer une nouvelle scène, et nous en ferons un Sprite Three D. Ce ne sera qu'une simple liste à puces Nous l'appellerons underscore D pug. Et pour ce qui est des actifs matériels, j'ai un réticule. Ça fera très bien l'affaire. XMKS Spot, si tu vois ce que je veux dire, et je vais juste le rendre rouge Je vais également passer aux drapeaux, et pour le panneau d'affichage, je vais juste placer un panneau en Y de manière à ce qu' il soit toujours face à la caméra, et je vais économiser cela sous la rubrique des ressources en armes n'est pas grand-chose. Nous allons créer un script, et j'ajouterai également un chronomètre, et je mettrai le chronomètre juste une seconde. Connectez le délai d'expiration du signal au script, et une fois ce délai expiré, je n'aurai aucun signal. C'est bon, cool. Et je vais ajouter cette scène en tant que variable ici. Je vais taper var, Debug, underscore bullet, puis je vais précharger, et je vais faire glisser cette scène sur Il suffit de le déposer là-dedans, comme ça. Et je vais en fait les retirer du dossier des ressources sur les armes parce que c'est là que nous les conservons, ok, cool. Je les ai déplacés juste pour les rendre un peu plus nets dans mon projet Il va donc falloir que je réinitialise ce préchargement. Ainsi, chaque fois que vous déplacez ce fichier, vous devrez le relier vers haut et le faire glisser vers le bas C'est donc un bullet debug surréaliste. D'accord. Nous devons donc maintenant instancier cela. S'il y a une collision, je taperai probablement var, hit, underscore indicator, underscore indicator, equals debug bullet point Je vais taper world equals getre point Get Root, et je vais juste ajouter l'enfant Indicateur informatique. Et je vais définir la transformation. Appuyez donc sur l'indicateur Global Translate et il passera simplement à la position du point de collision de la balle. Cela apparaîtra donc à l'endroit de la collision. là que vous pouvez le voir. Et ils ne sont pas en train de disparaître Je suppose que c'est parce que j'ai oublié de le régler sur Autotrt et ils vont commencer à disparaître Maintenant, vous serez toujours en mesure de voir où va ce hit scan. ne fera que vous aider à développer votre jeu, il vous suffira de le remplacer par un autocollant lorsque vous serez prêt Et vos lettres où cela apparaît dans l'arbre, je ne sais pas si je suis un grand fan de l'idée de le laisser tomber à la racine. Peut-être que nous pouvons le transférer dans le monde entier. Cela n'a probablement pas tant d' importance, mais je vais revenir sur le personnage du FPS et sur l' endroit où nous l'instancions là où il est écrit « Get Root Je vais juste Get child et je vais juste taper zéro, qui sera le premier nœud, qui sera la scène dans laquelle vous vous trouvez, vous savez, le niveau. Dans la plupart des cas, cela dépend si votre jeu est plus complexe. Si votre jeu est plus complexe, je suppose que vous n' avez pas besoin de ce didacticiel. Maintenant, vous verrez qu'il apparaît dans le monde entier. Ce n'est probablement pas si important, mais j'ai juste pensé qu'il pourrait être important de souligner que, vous savez, penser à ces choses lorsque vous ne faites qu' instancier des D'accord. C'est ça. Nous l'avons fait. Appuyez sur Scannez les armes. Ensuite, nous ferons projectiles. Je te verrai la semaine prochaine. Très bien, les gars, c'est comme ça qu'on utilise une arme à scanner. Comment y es-tu allé ? Ensuite, nous avons les armes à projectiles. Nous allons ensuite tirer des lasers avec ces armes. Alors gardez un œil sur celui-ci. 6. Armes à projectile: Comment ça va, tout le monde ? C'est Isaac de Shaft Games qui présente notre quatrième vidéo de notre série sur la création d'un système d' armes FPS. Aujourd'hui, nous cherchons à créer des armes de projection. Une arme à projectiles est exactement ce que vous pensez qu'elle est. Nous allons tirer un projectile physique avec notre arme sur notre cible, et s'il atteint, nous allons infliger des dégâts Notre jeu a déjà été configuré pour obtenir le point de collision depuis le centre de la caméra. Il ne nous reste plus qu'à lancer un projectile avec un pistolet M dans cette direction Commençons donc. OK, maintenant nous avons configuré la collision de notre caméra. Notre hit scan est terminé. Allons installer le projectile. Nous avons juste besoin de créer une fonction, mais passons d'abord à la ressource arme et créons quelques variables, car si nous lançons un projectile, nous devons faire apparaître Je vais donc simplement déplacer cet indicateur d'exportation vers le bas, et en dessous, nous allons créer une nouvelle variable à export va, et nous allons simplement l' appeler projectile à charger Et ça va être une scène pleine à craquer. Ce sera donc la scène que nous instancierons lorsque nous créerons une arme à projectile Ensuite, nous allons créer la vitesse du projectile. Ce sera la vitesse à laquelle le projectile ira. Si vous créez un lance-roquettes, vous voulez qu'il aille un peu plus lentement, mais s'il s'agit d'une balle, il faut peut-être qu'il aille un peu plus vite OK, je vais choisir quand je vais porter des armes. Je sens le blaster N. Je vais prendre le blaster N, et je vais le changer en projectile Assurez-vous donc qu'au moins une de vos armes est marquée comme projectile Donc, maintenant nous avons cliqué sur le scanner de notre fusil d'assaut, mais sur notre autre arme, rien ne se passe. Alors entrons et configurons ça. Créons d'abord une vitesse de projectile. Je vais juste en choisir 100 pour commencer. Et nous devons créer un projectile. Je vais donc utiliser l'une des balles en mousse de Kenny. Probablement celui-ci , une balle en mousse A. Je vais donc créer une nouvelle scène, et je vais cliquer sur Autre nœud, et je vais prendre un corps rigide en trois D, et je vais le renommer en Bullet Et je vais faire glisser ce modèle et le rendre local , puis me débarrasser de tous les autres nœuds et conserver le maillage. Je vais devoir réinitialiser la transformation là-dessus, donc je vais le faire rapidement. Et je vais juste le faire pivoter pour qu'il soit horizontal sur l'axe z. C'est très important pour une balle. Nous allons enregistrer cette scène dans le dossier du didacticiel. Maintenant, je vais juste vous présenter le modèle d'arme juste pour que je puisse voir à quoi cela ressemblera en comparaison si je dois y apporter des modifications. Et je pense que je vais l'agrandir un peu pour que nous puissions le regarder, il est de la bonne taille, mais je pense qu'il pourrait être plus grand, donc je vais l'agrandir un peu. Je vais supprimer ce pistolet et réinitialiser les transformations. Maintenant, je vais jouer avec le matériel. Vous n'avez pas besoin de faire ça. Mais je pense que parce que c'est un laser, vous savez, il va être émissif. Donc je vais juste configurer une émission, la rendre super lumineuse, parce que ça a l'air cool Rien vraiment. Aucune autre raison. OK. Vous pouvez choisir de multiplier, mais ça n'a pas vraiment l' air très beau. Ajoutez donc ce que vous voulez garder pour l'opérateur, et nous devons créer un corps rigide. Maintenant, je vais créer une forme de capsule, et je vais évidemment la faire pivoter, et nous allons devoir la réduire considérablement. L'astuce avec les corps rigides, désactivez le claquement, c'est que vous voulez qu'ils soient un peu plus gros que le projectile que vous êtes en train de tirer, parce que je ne sais pas vraiment avec Godot 4 si la physique Dans Godot 3.5, vous ne pouviez pas vraiment utiliser des armes à projectiles pour, par exemple, des armes à tir rapide Vous ne pouviez vraiment les utiliser que pour des lance-roquettes, etc., parce que le moteur physique ne pouvait pas détecter les collisions 100 % du temps, et vous deviez, vous savez , faire beaucoup de ruses pour que cela fonctionne Mais au moins lors de mes tests avec Godot 4, il semble être nettement plus fiable avec le nouveau moteur physique Je vais donc procéder à la configuration, et vous ne devriez pas vraiment avoir de problèmes, mais si vous rencontrez des problèmes, cela pourrait simplement être lié au moteur. Gardez cela à l'esprit, je suppose. Je vais sélectionner un CD continu sur le boîtier rigide, régler le nombre de contacts dix et sélectionner le moniteur de contacts. Cela lui permettra de détecter les collisions. Je vais réduire la masse à 0,1, et je vais créer un script. OK, donc la première variable est évidemment les dégâts. Nous allons simplement le configurer sous la forme d'un entier, et ce sera zéro, mais nous allons travailler là-dessus. Je vais vous expliquer cela dans une seconde. Et nous allons connecter le signal le corps a saisi au script. Et on y va, si Body Dot est dans le groupe, Brackets Target. Il s'agit d'un groupe que nous avons créé dans notre précédent tutoriel sur les scans HIT. Et le corps a des crochets de méthode réussis. Ces deux éléments sont donc nécessaires ici. Donc, si vous n'avez pas de groupe, créez-le maintenant, et vous aurez besoin d'une méthode pour photographier , appelée «   hit successful ». Et nous appellerons cette fonction si les deux sont vraies, et nous répercuterons les dégâts. Et nous ferons la queue gratuitement. Et puis nous allons faire la queue gratuitement malgré tout. Vous pouvez également le mettre à l'extérieur de l'instruction IF. Je vais également créer un chronomètre au cas où nous ne toucherions rien et que cela ne mène nulle part. Nous le supprimerons simplement au bout d'un certain temps. OK, ça devrait être tout ce dont nous avons besoin. Nous pouvons fermer ces dossiers, rendre les choses un peu plus propres. Nous pouvons revenir dans notre ressource blaster, et nous allons faire glisser ce projectile pour le charger dans cette ressource afin de l'avoir dans le Nous pouvons maintenant revenir voir le responsable des armes et commencer à configurer notre méthode de projectile Nous avons donc une collision entre nos caméras. Il s'agit d'une fonction importante. Si vous ne l'avez pas, vous en avez certainement besoin. Nous allons renvoyer le point de collision ou la fin du rayon. Nous aurons donc toujours un endroit où envoyer notre projectile C'est pourquoi nous devons rétablir l'extrémité du rayon au cas où vous ne tireriez nulle part. Donc, sous projectile, je vais créer une fonction appelée lancer un projectile, et je vais passer en compte la collision avec la caméra Je vais créer cette fonction ici, fonction Launch Projectile, et elle prendra une variable appelée point La première variable dont nous avons besoin est la direction, et ce sera le point moins le point pour obtenir l'origine globale du point de transformation. Et nous allons le normaliser. Cela vous sera assez familier si vous avez effectué le Hit Scan. Ensuite, nous allons devoir instancier le projectile. Je vais créer une variable appelée projectile, et je vais dire projectile à point d'arme actuel pour instancier point de chargement Et je viens de me rendre compte que j'ai fait une faute d'orthographe. Je vais donc venir régler ce problème. Ensuite, nous allons devoir instancier cette puce. Assurez-vous donc que la puce est définie comme niveau supérieur pour cela, car nous allons l'instancier sous la puce, qui fait partie du corps cinématique Donc, sous le point AdCild, nous allons ajouter le projectile nous allons ajouter le Et le point de projectile DAMAC sera réglé sur le point d' arme actuel DAMAC puis sur la vitesse linéaire du projectile Et ce sera la direction multipliée par la vitesse actuelle du projectile à points d'arme. Assurez-vous donc que la puce est définie comme niveau supérieur pour cela. C'est donc très important. Nous devons également configurer les couches de collisions. Je ne les ai pas encore expliquées, mais une chose que j'ai remarquée, c'est qu'avec GiDo 4, les corps physiques doivent se trouver sur une couche séparée Ils ne fonctionnaient donc pas pour moi lorsque j'ai initialement créé cette scène. Maintenant, j'ai créé une couche physique appelée Objects on layer three. Et la quatrième couche, ce sont les armes. Assurez-vous donc de configurer votre projectile pour qu'il ait également les mêmes couches de collision Nous allons le mettre sur la troisième couche, et nous allons le faire masquer couche trois et la couche un. Il va donc interagir avec tout ce qui trouve sur la couche mondiale. Et pensez à vos ennemis, s'ils se trouvent sur une couche physique distincte, assurez-vous sélectionner le masque pour votre projectile Voici donc la boîte. Il se trouve sur la troisième couche, et il masque un, deux et trois Il peut donc interagir avec tout ce qui se trouve sur ces trois couches. Lancez le jeu ici. Nous allons passer à l' arme qui est un projectile, et vous pouvez voir qu'elle arbore ces projectiles et qu'elle les tire, puis nous tirerons sur la boîte et vous pourrez la voir rouler C'est sûr, et vous pouvez voir ci-dessous dans la console que la santé cible est en train de diminuer. Cela fonctionne donc comme nous nous y attendions, ce qui est vraiment incroyable. C'est aussi simple que cela. OK, les gars, c'est Isaac du futur qui va interrompre ce tutoriel sur les projectiles J'ai trouvé un petit bogue dans le code. Je ne sais pas si quelqu'un l' aurait remarqué ou s' en serait rendu compte, pour être honnête, parce que c'est quelque chose qui peut arriver, mais ce n'est peut-être pas le cas, selon la façon dont vous avez configuré les choses, donc vous ne le verrez pas réellement dans la vidéo, mais je l'ai remarqué quand je jouais avec un gros projectile que vous tirez et que vous filmez rapidement Si quelque chose arrive, je vais le jouer ici. J'ai apporté quelques modifications à ce projet. Cela fait longtemps que je n' ai pas enregistré cet original. Mais voici le pistolet, et c'est un projectile C'est donc un peu plus grand, et c' est devenu automatique. Donc, si je le maintiens enfoncé, observez ce qui se passe. Regardez ces deux derniers. Ils commencent à prendre une toute autre direction. Maintenant, vous vous demandez peut-être pourquoi vous l'avez déjà fait, mais il s' agit essentiellement du projectile lancé depuis le centre de la caméra qui interagit avec le projectile lui-même au lieu de le traverser et de toucher l'objet qui se trouve derrière Cela changera donc la trajectoire du projectile, car la direction dans laquelle nous l'enverrons sera uniquement basée sur cette distance réduite, n'est-ce pas ? La balle est donc beaucoup plus proche du joueur que le mur ne l'est là-bas. Il va donc prendre une direction complètement différente, et il ne s'alignera pas avec le réticule au centre de l'écran Ça va donc être assez visible. On voit que ça dévie comme ça , ce qui est assez étrange Je vais donc vous montrer rapidement comment résoudre ce problème. Je vais revenir au projet. Les choses vont être un peu différentes, mais tu dois juste être indulgente avec moi. Notre caméra est entrée en collision, puis il y a aussi notre projectile de lancement Donc, le flux du code est essentiellement le suivant : si je reviens pour prendre une photo, vous pouvez voir que j'ai une collision avec la caméra, c' est-à-dire que nous filmons une matrice projetée la caméra vers l'endroit où nous inclinons un mur, elle revient Ça ne touche rien, c'est juste revenir avec le point du père. Ensuite, nous le transmettons au projectile de lancement, et nous le lançons par la pointe des balles, comme si le canon du pistolet était l'endroit où sort le projectile, et il se dirige vers ce point final partout où il Et en général, c'est censé être là où se trouve le centre de la caméra. C'est pourquoi il atteint cette radicule. Mais évidemment, s'il est efficace, ce n'est pas là que nous voulons qu'il aille. Donc ça ne va pas s'aligner , et ça va avoir l'air bizarre. Donc, ce que nous devons faire, c'est ajouter une exclusion à ce paramètre de requête de rayons physiques en trois D, et il y a une exclusion. Et nous pouvons définir l'exclusion et nous pouvons transmettre la valeur. Il faut un RID. Nous avons donc besoin de deux choses, non ? Nous devons nous débarrasser de la balle dès le départ, ce qui n'est pas si compliqué que cela. Ce que nous pouvons faire, c'est configurer un réseau. Je vais le faire sous cet énumérateur ici, donc je vais passer en revue la collision, souligner Et je vais le définir comme égal à un tableau vide. Non, ce n'est pas celui que je veux. Laisse-moi partir. Et je vais revenir au projectile de lancement. Et ce que je ferai, c'est qu'après avoir ajouté l'enfant, en fait, après avoir instancié, nous pouvons vraiment le faire, nous pouvons obtenir le projectile ou créer une variable appelée Var projectile, soulignée RID, qui sera Ne pas obtenir de pièce d'identité. s'agit simplement d'une fonction intégrée pour n'importe quel objet de collision, puis nous passerons simplement à l'exclusion des collisions. Appuyez sur le devant. Ça n'a pas vraiment d'importance. Projectile notre idée En fait, je pense que le refoulement est rapide, nous n'allons pas en stocker autant Maintenant que nous l'avons ajouté à un tableau, nous pouvons revenir au paramètre de fatigue du rythme physique trois D, et juste après l' avoir nous pouvons revenir créé, nous pouvons simplement écrire un nouvel ensemble de points d' intersection exclude Je pense que cela a été défini comme une exclusion, et cela prend un tableau, et nous transmettons cette exclusion de collision. Et maintenant, cela n'arrivera plus. Alors lançons le jeu. Passez à notre arme, et vous verrez qu'elle tourne parfaitement droit à tout moment. Mais maintenant, nous avons un nouveau problème. Le nouveau problème est que nous créons une gamme de RIT qui ne cesse de croître Et j'ai fait des tests de résistance, et vous pouvez atteindre environ 5 000 points avant que le jeu ne plante. Nous devons donc les retirer au fur et à mesure qu'ils sont retirés de l'évier. Nous devons donc le faire Juste après avoir créé le projectile et l'avoir ajouté à ce tableau d'exclusion, nous devons également connecter le signal de la balle sortant de l'arbre au gestionnaire d'armes C'est le nœud à puces, et sous les signaux , l'arbre est sorti Il est donc émis une fois que le nœud quitte l'arborescence et n'est plus actif OK, donc, comme je l'ai dit, nous devons connecter signal de sortie de l'arbre Nous devons donc également installer une couchette et nous allons la retirer dans ScoreEclusion Et pour cela, il faudra un projectile pour souligner le RID. Ensuite, nous ferons tout ce que nous ferons pour cela. Je vais noter ce code. Nous allons passer au point d'exclusion de collision RACE, puis nous passerons ce projectile RID, et je vais aussi l'épeler correctement Mets un E à la fin. Oh, trois comme une pâte d'accord. Et configurez ça comme ça. C'est donc tout ce dont nous avons besoin pour l'exclusion. Il ne nous reste plus qu'à relier cela à un signal. Maintenant, les signaux ont beaucoup changé dans GodOfo et une chose que j'ai apprise en faisant cela, c'est qu' suffit d'appeler directement un signal, il doit donc ressembler à Nous pouvons donc passer au point de projectile, au point de soulignement point de sortie, à Connect, puis Et puis il suffit de supprimer la liaison par points d'exclusion. Et là, je peux passer le projectile RID, mais je pense que ce devrait être un point de projectile Get Vous pouvez donc voir à droite, je suis en train de le créer, et vous pouvez le voir fur et à mesure que je recule. C'est un peu difficile. Je me demande si je les envoie simplement. C'est probablement la meilleure façon de le faire, car ils expirent au bout de 10 secondes et ils se supprimeront d'eux-mêmes. Vous pouvez donc le voir grandir jusqu'à 21. Et au fur et à mesure qu'ils se suppriment, ils devraient être réduits, et vous pouvez les voir diminuer, comme ça. C' est donc, à mon avis, le meilleur moyen de résoudre ce problème que je vous ai déjà montré ne concerne pas directement le centre. Ce que nous devons faire, juste pour récapituler, c'est éliminer les projectiles et les ajouter à une liste d' exclusion pour notre paramètre physique requis ici Si vous ajoutez cela à l' exclusion de cela, le rayon émis par celui-ci ne détectera pas les balles, et le rayon émis par celui-ci ne détectera pas les balles, c'est exactement ce que nous voulons Mais nous devons également les supprimer de ce tableau au fil du temps, car un tableau ne peut devenir trop grand qu' avant que le jeu ne plante, comme je l'ai découvert, cela peut être évident pour certaines personnes Je ne sais pas Ça m'a surpris. Euh et oui, donc il suffit de brancher le signal comme ça, de connecter le point de projectile, de supprimer le point d'exclusion, de se débarrasser du point de projectile Ça dérange un peu la tête, ce nouveau signal. Quoi qu'il en soit, c'est comme ça que tu le fais. OK, les gars, c'est tout ce qu'il y a à voir. J'espère que vous avez trouvé ce didacticiel utile pour le prochain épisode de cette série, où nous allons ajouter de la physique à nos armes à hit scan afin qu'elles se comportent en quelque sorte de la même manière que nos armes à projectiles 7. Physique du Hitscan: Bonjour, les gars. Bienvenue dans ce prochain tutoriel. Nous avons scanné les armes Hit. Nous avons fabriqué des projectiles. Nous allons maintenant commencer à travailler sur l'unification du comportement physique entre les deux Je tire sur cette boîte, et j'utilise une combinaison d'armes à hit scan et d'armes à projectiles, et la boîte réagit aux deux Cela peut ne pas sembler si important. Vous êtes peut-être plus préoccupé par le fait de tirer sur des ennemis. Mais comme nous photographions un corps rigide, j'ai pensé que c'était le bon moment pour expliquer comment nous pouvons unifier les deux Cela ne prend pas longtemps et cela fait une énorme différence dans l' apparence de votre jeu. Passons donc à notre projet et jetons un coup d'œil. Nous en sommes à notre projet, et si nous exécutons le jeu tel quel, vous pouvez voir que nos armes à scanner ne font rien, mais nos projectiles oui certainement OK, alors comment pouvons-nous bien résoudre ce Si nous sautons dans notre boîte, nous pouvons voir que nous avons une fonction simple qui prend les dégâts et les applique à la boîte. S'il atteint zéro, nous appelons le quart et il disparaît de la scène. À l'heure actuelle, la fonction qui contrôle cela dans la branche hit scan de notre système d'arme est une fonction appelée «   dégâts par scan » qui est déclenchée après la détection d'une collision par notre fonction hit scan collision. Et pour le moment, nous ne faisons que passer dans le collisionneur. Et nous sommes en train de vérifier que s' il fait partie d'un groupe appelé target et qu'il possède la fonction appelée hit successful, nous allons appeler cette fonction et lui infliger les dégâts. n'est donc pas grand-chose, mais nous pouvons utiliser certaines informations recueillies lors de notre collision pour déterminer la direction dans laquelle elle devrait se déplacer. Nous devons donc transmettre quelques paramètres supplémentaires, et nous les nommerons ici. Nous appellerons une direction, et l'autre, nous appellerons position. R, et je vais juste revenir à l'endroit où nous appelons cette fonction, et j'écrirai la direction à puces. Nous l'avons déjà compris au tout début de cette fonction. La direction de la puce est égale au point de collision moins l'origine du point de transformation globale du point normalisée. C'est donc dans cette direction que se dirige notre peau touchée. C'est donc essentiellement de là vient la balle s'il y en avait une. Et la prochaine chose dont nous avons besoin, c'est d'une position. Maintenant, nous pouvons l'obtenir à partir de la position du point de collision de la balle. Il s'agit d'un champ renvoyé par la fonction Gwld Three D direct space state dot intersect Ray C'est quelque chose qui est renvoyé lorsqu'il entre en collision avec quelque chose Et c'est la position mondiale. Nous allons passer à cette fonction ici et vous pouvez voir qu'il s'agit du point d' intersection. C'est donc là que se situe cette position dans l'espace mondial. Et nous pouvons nous en servir pour déterminer la position de notre cible. Maintenant, si nous revenons ici, en passant par les deux. Et ce que nous devons faire également lorsque nous passons dans Collider Dot Hit avec succès Nous voulons également passer dans la direction et la position. D'accord. Maintenant, il suffit de revenir dans la boîte et de mettre à jour la fonction « hit successful » ici. Voici un petit truc pour toi. Je vais écrire Underscore Direction. Deux points sont égaux au vecteur trois points zéro. Cela aura pour effet de rendre ces paramètres facultatifs afin que nous puissions toujours les utiliser avec projectiles à corps rigide que nous tirons, et que nous puissions réutiliser cette fonction sur d'autres cibles qui n'ont peut-être pas besoin de ces Et la prochaine étape que nous devons appeler est évidemment position, et nous allons faire exactement la même chose, souligner la position Deux points sont égaux au vecteur trois points zéro. OK. Nous allons donc faire un petit tour du jeu ici et juste pour vous montrer que nous n'avons rien changé. Nous transmettons ces fonctions, et notre tournage dans ce jeu n'a pas du tout changé, donc tout fonctionne toujours. Ce sont tous des paramètres facultatifs. Notre projectile ne fait que transmettre les dégâts, et le reste sera nul Nous pouvons donc descendre ici et nous devrons créer une nouvelle variable appelée Hit underscore position Et ce sera un peu de calcul pour déterminer la position du résultat réel, et cela équivaudra à souligner la position moins obtenir l'origine du point de transformation global Nous allons descendre au bas de cette fonction et nous dirons si la direction du trait de soulignement n'est pas égale au vecteur 30 Nous n'allons donc l'exécuter que si des informations sont transmises, sinon nous n' allons pas le faire. Et nous appellerons la fonction apply impulse, et elle fera exactement ce qui est indiqué sur la boîte, en fait. Il va appliquer une impulsion, qui est une force sur la position. Notre impulsion sera donc, ou du moins la façon dont j'aime le faire, de manière à ce qu' elle évolue en quelque sorte en fonction de la puissance de l'arme, nous allons appeler la direction, et nous allons la multiplier par les dégâts. Maintenant, si l' impulsion va aller dans la direction, c'est parce que impulsion va aller dans nous voulons que cette impulsion soit dans la direction de la balle. Donc, en gros, c'est pourquoi il s'agit de la direction de l'impulsion. Et nous multiplions ce montant par les dégâts pour en augmenter un peu plus en fonction de peu plus en fonction l'arme ou de quoi que ce soit Ensuite, la position suivante sera la position, que nous avons calculée à la position de frappe, donc je vais la transmettre. Et c'est tout ce que nous devons faire. Nous pouvons lancer le jeu, d'accord ? Vous pouvez donc voir maintenant que la boîte réagit au hit scan et qu'elle a disparu. Cela pourrait ajouter de la santé pendant que nous jouons avec ça , juste pour que ce soit un peu plus facile. OK, tu peux me voir m'intéresser à tout ça. Peu importe où je le photographie, il semble réagir de manière sensée, c'est exactement ce que nous voulons. Et tu peux voir si je le tire avec le projet-arme. Il y a évidemment beaucoup plus de force derrière cela, mais c'est quelque chose que vous pouvez modifier Vous pouvez modifier la masse de la balle pour lui donner moins de force. Nous pouvons donc revenir à notre projet et le faire manière à ce que le résultat soit similaire, selon le pistolet. Cela dépendra simplement de ce que vous essayez de faire et de la façon dont vous voulez que les choses réagissent. Mais, tu sais, c'est la fonction que tu dois faire. Je ne sais pas si c'est précis physiquement à 100 %, mais c'est suffisant et c'est assez facile à mettre en œuvre, non ? Et comme nous sommes en train de photographier ce corps rigide, j'ai pensé que c'était le bon moment pour vous le montrer afin que nous puissions revenir à la balle et réduire cette masse de 0,1 kg à 0,01 C'est donc une balle très légère Et nous pouvons le refaire et ensuite, d'accord. Cela semble assez comparable, je dirais, à ce que fait la peau un peu plus chaude, mais je ne pense pas que les gens s'en apercevraient vraiment. Maintenant, vous pouvez tirer sur des corps rigides avec les deux armes, et ils réagissent de la même manière, ce qui est plutôt cool. Maintenant, pendant que nous sommes ici, je pense que nous devrions simplement ajouter un corps statique. J'aime donc cette souris particulière appelée target B, et je vais revenir sur le projet, et je vais créer une nouvelle scène en cliquant sur ce signe plus. J'appuierai sur le nœud O, je rechercherai un corps statique en trois D, et je ferai glisser ce modèle dans la scène. Je vais cliquer avec le bouton droit de la souris et demander à Local de se débarrasser de tous ces nœuds supplémentaires et de les supprimer. Ensuite, je cliquerai sur la cible. Je vais être un peu paresseux et me contenter écraser l'assemblage par collision à convexe unique Ce n'est pas le moyen le plus efficace de créer une forme de collision, mais c'est certainement facile. Maintenant, je vais l'enregistrer ici dans le dossier du didacticiel. Je vais juste l'appeler quelque chose comme Target. Je vais réinitialiser la position parce que tout va un peu mal . Je vais donc simplement la changer, m' assurer qu' elle est sur zéro, et je renommerai ce corps statique quelque chose comme cible OK, nous allons donc créer un Scripnx et l'enregistrer dans le dossier du didacticiel, et nous l'appellerons un peu comme cible de soulignement statique, et nous allons le créer et nous pouvons peu près simplement copier le code depuis notre Je vais juste copier ce premier bit. Nous n'en avons pas besoin, car il est évident que cela ne réagira pas à la direction et à la position, mais nous en avons besoin parce que le joueur le transmet. Nous allons donc l'apporter , le copier, et je vais juste le saisir ici et je vais le coller dedans. Et juste en dessous, je vais juste écrire pass pendant une seconde, et je vais créer une variable appelée Health comme avant, sauf que cette fois, il n'y en aura qu'une. Et sous le signe du succès, ce sera à peu près ce que nous avons commencé avec la box. Nous allons soustraire les points de vie pour les points de vie moins soient égaux aux dégâts Et si la santé est inférieure ou égale à zéro, alors nous serons libres de Q. Joli et simple. C'est tout ce dont nous avons besoin, mais nous devons transmettre ces deux variables facultatives juste pour satisfaire le personnage de notre joueur. Si nous ne le faisons pas, cela va se bloquer. Je vais donc ajouter un non à la scène, et je l' appellerai simplement cibles statiques. Je vais accéder à ce dossier, et je vais simplement l'ajouter à la scène. OK, je vais le faire glisser sur ce mur juste pour que nous ayons quelque chose sur lequel tirer. OK, c'est beau et positionnez-le sur le mur. Je vais l'évoquer un peu. Je vais juste le reproduire quelques fois pour que nous ayons quelque chose à photographier. se peut que je saute cette section parce que c'est un peu ennuyeux. OK. Et avant que j'oublie, nous devons ajouter ce corps statique à notre groupe appelé Target. Je vais donc ouvrir à nouveau cette scène, et je vais passer à l'onglet nœud sur le côté droit où il est indiqué l'historique des nœuds Inspector. Je vais cliquer sur Nœud, puis sur groupes ici, puis sur Gérer les groupes. Je vais taper Target, A, cliquer sur le corps statique, sur Ajouter, puis sur OK. Et c'est tout ce dont nous avons besoin pour sauver cette scène. Assurez-vous que c'est le même que celui de la boîte. Vous pouvez avoir plusieurs groupes si vous le souhaitez, et vous pourriez également appeler différentes fonctions sur ceux-ci. C'est très bien. Si vous voulez le faire de cette façon, je les exécute simplement tous les deux dans le même groupe et je fais appeler exactement la même fonction. Très bien, nous les examinons et vous pouvez voir qu' ils ont été supprimés avec succès. C'est bon. C'est ainsi que vous ajoutez les réactions physiques. C'est aussi comme ça que j'aime m'occuper de mon corps statique. C'est juste un moyen simple et agréable de gérer les cibles, avec une seule fonction appelée et les deux variables qui ne sont pas requises en permanence. Il existe également de nombreuses autres façons de le faire, donc si vous en avez une meilleure, n' hésitez pas à nous le montrer dans les commentaires, et j'en parlerai peut-être à un moment donné. À part ça, les gars, c' est un autre épisode notre série sur la façon de créer un système d'armes FPS complet. 8. Ramasser les armes: Comment ça va, tout le monde, et bienvenue à la prochaine leçon de la série sur la création d'un gestionnaire de FPS dans GI Do pour. Aujourd'hui, nous donnons enfin à notre joueur la possibilité de récupérer des armes. Commençons. OK, donc si nous voulons pouvoir récupérer nos trois armes, nous devons créer des corps rigides pour chacune d'elles. Je vais donc créer une nouvelle scène ici, et je vais simplement naviguer jusqu' à l'endroit où se trouvent les modèles, puis je vais cliquer sur Autre nœud, et ce sera un corps rigide Je vais donc le rechercher et sélectionner . Je vais donc le rechercher et sélectionner Je vais le renommer avec le nom de l' arme que je suis en train de créer Donc pour celui-ci, ce sera Blaster M, je vais y faire glisser ce modèle Je vais le rendre local, et je vais simplement supprimer ces vides, comme vous m'avez vu le faire plusieurs fois auparavant Je vais également réinitialiser la transformation à ce sujet. Procédez à la transformation, réinitialisez-la simplement pour qu'elle soit au centre. Et la chose la plus simple à faire pour créer une forme de collision est cliquer sur ce bouton où il est écrit « maillage ». Je vais opter pour une collision convexe unique. C'est une assez bonne forme intermédiaire. Et comme vous pouvez le constater, j'ai une forme de collision assez proche de celle de l'arme Et je vais enregistrer ça. Je vais créer un nouveau dossier, que j'appellerai Spawn Weapons, et je vais appuyer sur Enregistrer sur cette scène. D'accord. Je vais donc faire la même chose pour les deux autres armes. Je vais m'y prendre rapidement. D'accord. J'ai donc configuré mes trois corps rigides, et maintenant nous pouvons y ajouter un script. Je vais donc appuyer sur ce petit bouton de script, et je vais appeler le script quelque chose comme ramassage d'armes parce que nous allons l'utiliser dans les trois cas. Et je vais taper à l' export via le nom de l'arme. Et cela reflétera exactement le nom de l' arme sur la ressource. Nous allons donc simplement créer la variable ponctuelle suivante, de sorte que nous n'avons pas besoin de la nommer ici. Et les prochaines seront les munitions actuelles. Ce seront donc les munitions qui se trouveront sur l'arme lorsque vous la ramasserez ou la laisserez tomber Et la troisième variable sera également celle des munitions de réserve. Vous pourriez avoir une variable pour les munitions, mais je pense que c'est un peu plus facile d'en avoir deux Honnêtement, mais ce n'est vraiment qu'une option de design pour le moment. Nous allons donc faire glisser ce script sur ces trois armes et nous nommerons également ces armes. Assurez-vous donc qu' ils sont identiques à votre ressource. Revenez sur ce point. Si je clique sur le gestionnaire d'armes et que j'ai les trois, le nom de l' arme Blaster I, c'est en minuscules puis en majuscules Je dois donc m'assurer qu' ils sont exactement les mêmes. Sinon, ce que je vais faire ne marchera pas. Et vous voulez que le mode opératoire actuel et le mode opératoire de réserve soient raisonnables. C'est à vous de décider à quoi vous voulez qu'il ressemble. Cela va commencer à beaucoup changer lorsque vous programmez la capacité larguer ces armes, car il n'est pas nécessaire que ce soit le O à ce moment-là. Je suis donc juste en train de m'assurer que les trois armes que je vais créer contiennent uniquement les munitions standard et les munitions de réserve que j'ai installées sur la ressource, afin qu' elles soient exactement les mêmes Mais ils peuvent vraiment être tout ce que vous voulez. OK, maintenant que c'est fait, il va falloir le faire. En outre, il suffit de vérifier les couches physiques. Donc, si vous ne vous en souvenez pas, nous avons mis en place un ensemble de couches physiques. Nous avons le monde, les objets du joueur et les armes. Maintenant, la quatrième couche sera celle où nous mettrons les armes. Je vais donc passer à la collision Object Three D, et je vais sélectionner la couche quatre. Je vais désélectionner la première couche, laisser une masquée, et j'en masquerai également la quatrième, pour faire bonne mesure Et je vais également en masquer trois pour les objets, au cas où vous laisseriez tomber une arme sur un objet et que vous voudriez interagir. Je vais donc faire de même avec les trois armes. Vous pouvez également masquer le joueur, exemple si vous vouliez passer à travers les armes et que vous vouliez qu'elles se déplacent et interagissent comme ça, mais lors de mes tests, j'ai trouvé que ce n'était pas une très bonne expérience pour le joueur. Surtout si vous essayez de ramasser des armes et que la forme de la collision déplace des objets. OK, maintenant que c'est fait, nous allons revenir au personnage FBS, cliquer sur le petit bouton Plus et ajouter un nœud de zone 3 D au personnage FPS Et nous devrons également ajouter une forme de collision. Mais d'abord, je vais le renommer pour détecter la détection, et je vais ajouter une forme de collision, trois D à cela Je vais juste en faire une boîte, et je vais en faire en sorte qu'elle soit de la même taille que le joueur, afin que tu ne puisses pas ramasser des objets sous terre. En réalité, c'est à vous de décider, vous savez, de ce qui fonctionne le mieux pour votre jeu Je vais l'élargir un peu sur les deux axes, juste pour qu'il y ait suffisamment de place pour que le joueur n' ait aucun problème à ramasser les armes Pas besoin de trop s'en approcher. D'accord. C'est bon. Bien entendu, nous devons également configurer la collision dans la zone. Je vais donc cliquer sur le nœud de détection du pick-up, puis passer à la collision, puis je vais désélectionner le monde et désélectionner le masque, et nous voulons simplement masquer la couche 4 Ainsi, il détectera des objets sur la quatrième couche, où se trouveront nos armes. Je vais connecter le signal, donc je vais cliquer sur nœud, sur le corps du signal Entré, et je vais double-cliquer sur le nœud du gestionnaire d'armes. OK, donc je vais juste supprimer un peu d'espace ici. Et sur ce point, nous allons avoir besoin de mettre en place certaines choses. Nous savons que la variable sera le nom de l'arme, donc je vais l' imprimer juste pour vous le montrer. Assurez-vous que tout ce que nous avons configuré jusqu'à présent fonctionne. Assurez-vous simplement que cette variable est la même. Je n'ajoute aucune sorte de vérification ici, donc l'hypothèse est que cela existe certainement sur l'objet que nous allons détecter le plus sûr, mais qu'il fonctionnera si nous faisons les choses correctement. Je vais revenir à la scène principale sur laquelle nous travaillons, et je vais ajouter un nouveau nœud ici. Je vais simplement l'appeler armes, et je vais faire glisser les trois armes que nous avons créées et que nous avons créées dans Je vais tous les sélectionner. Je les soulève simplement pour qu'ils se trouvent dans le type d'aire de jeu que j'ai créée ici. Et je vais juste les séparer les uns des autres pour qu'ils soient seuls. Je vais leur donner un peu d'espace pour que nous ne les rencontrions pas en même temps. Maintenant, je vais juste lancer ce jeu. Et nous verrons cela en les franchissant , eh bien, en fait, vous ne pouvez pas les voir cause des jeux, donc je vais juste m'en tenir à ça. Vous pouvez voir Blast ou moi. Et quand je passe dessus, ils impriment le nom. Donc, assurez-vous simplement que tout fonctionne jusqu'à présent, et que, vous savez, tout a l'air bien, rien ne plante OK, maintenant que nous pouvons détecter nos armes, nous pouvons revenir dans le gestionnaire d'armes, et nous pouvons commencer à ajouter un peu de logique ici. Donc, la première chose que je veux faire est créer une variable appelée weapon in stack. Je vais faire en sorte que cela soit égal à Weaponsack Point Find, et je vais juste taper le nom de leur arme à point sur le corps Cela permettra de vérifier d'abord que nous n'avons pas déjà l'arme en notre possession. Cela renverra donc un négatif s'il n'est pas dans la pile. Si vous ne vous souvenez pas de la pile, il s'agit simplement d'une liste d'armes que le joueur a actuellement en sa possession. Donc, si ce n'est pas là, il va revenir à moins un, ce qui nous indiquera que nous devons prendre l'arme. OK, donc l'autre chose dont nous devons nous souvenir c'est exactement comment fonctionne notre machine étatique. Nous devons donc éventuellement appeler la fonction de sortie et transmettre une chaîne à l'arme suivante. Maintenant, la façon dont ces corps rigides sont configurés est qu'ils font référence à une chaîne de caractères aux armes. Il est donc évident que cela n'en est qu'à ses débuts. Nous n'avons pas la capacité de chuter. Comme nous n'avons pas la capacité de récupérer munitions contenues dans les armes au sol, nous appellerons Exit, qui se chargera de tout pour nous Donc je tape, si le nombre d'armes dans la pile est égal à moins un, alors nous devons récupérer l'arme. Et je vais venir ici, et la première chose à faire est ajouter cette arme à notre pile d'armes. Je vais donc taper Weapons Stack Point Push Brunt, et je vais taper cette valeur Body Dot Nom de l'arme OK, maintenant que l' arme est dans la pile, nous pouvons passer à elle, et nous pourrons également y revenir si nous l'éteignons. Nous devons nous concentrer sur les munitions contenues dans la ressource. Les ressources sont exclusives. Vous n'en avez généralement pas plusieurs copies. Les ressources sont donc toujours là. C'est juste que nous contrôlons si nous y avons accès ou non avec la pile d'armes. Ce que nous devons faire lorsque nous prenons une arme, c'est remplacer les munitions et les munitions de réserve par les valeurs du pistolet au sol C'est pourquoi le pistolet au sol possède ces valeurs. C'est donc ce que nous allons faire ici. Nous allons donc taper la liste des armes, et nous allons faire des crochets, et je vais simplement coller le nom de l'arme à point corporel parce que c'est un peu plus rapide, et je vais taper des munitions à point et je vais les régler de la même manière que les munitions actuelles du point du corps OK, je vais juste le copier parce que c'est un peu plus facile, et je vais le coller, et je vais juste changer les munitions actuelles pour les munitions de réserve et je ferai de même pour les munitions actuelles à points de corps Je vais remplacer cela par Body Dot Reserve Ammo en minuscules cette fois. OK, nous allons donc remplacer ces valeurs, et nous allons également émettre le signal de mise à jour de la pile d'armes, et nous allons transmettre la pile d'armes Enfin, nous voulons taper le nom de l'arme Exit Body Point, et nous devrions être prêts à partir. La dernière chose à faire est, bien entendu, de supprimer le corps rigide parce que nous l'avons récupéré. D'accord. Alors allons-y et voyons comment nous allons. Donc, la seule arme que nous pouvons prendre est celle de gauche. Je vais m'y rendre, et on dirait qu'il l'a ramassé, d'accord. Et ceux qui sont ici ne sont évidemment pas repris parce qu'ils existent déjà. Et je ne vais pas mettre à jour l'indicateur d'armes, qui contrôle notre position dans le réseau appelé pile d'armes. Ainsi, lorsque vous prenez une arme et que vous changez d'arme, ce ne sera pas toujours l'arme que vous attendez. Donc, si nous passons à la deuxième arme de la pile, nous la récupérerons. La prochaine fois que nous changerons, il sera là. Vous vous attendriez donc à revenir à Blaster N, mais vous vous êtes retrouvé sur Blaster I, je crois que ça s'appelle Nous pouvons donc régler ce problème. Nous n'allons pas le réparer complètement tant que nous n'aurons pas commencé à larguer des armes également. Nous avons donc juste un int normal contrôle notre position dans la pile d'armes. Pour être honnête, je pense que cela peut être amélioré, et nous pourrions le faire dans le prochain épisode lorsque nous aurons complètement expliqué comment cela fonctionne L'une des options qui s'offrent à nous est donc de mettre l'indicateur d'arme à zéro, afin que cela compte toujours à partir de là. Et comme c'est ce que nous avons poussé vers l'avant, il va fonctionner à peu près dès le départ. C'est une solution très simple, mais cela dépend du nombre d'armes que vous avez dans le jeu. Cela peut être vraiment ennuyeux pour le joueur. Donc, au lieu de cela, nous pouvons taper insert, et nous aurons besoin du nom de l' arme en forme de point corporel et d'une variante, qui ne sera qu'un indicateur d' arme, et nous pouvons le supprimer. En fait, ce n'est pas possible, donc je vais juste l' échanger. Ce sera notre solution finale, crochets Weaponstac, l'indicateur d' arme, le nom de l'arme Co Body Dot Donc, ce que nous allons faire ici, c'est simplement insérer l'arme à la position dans laquelle nous nous trouvons dans l'indicateur d'arme. À l'heure actuelle. Et vous savez en quelque sorte que si nous utilisons la deuxième arme, nous allons la placer en troisième position, et cela semble un peu plus naturel que de réinitialiser l'ensemble de la pile d'armes Et comme je l'ai dit, nous allons régler ce problème à la fin du didacticiel, alors ne vous inquiétez pas trop à ce sujet. Je l'ai donc lancé juste pour vous montrer à quoi il ressemble. Nous passons donc au blaster N, et vous pouvez voir maintenant qu'il apparaît entre les deux Ainsi, lorsque vous changez de version supérieure, c'est le blaster N et lorsque vous descendez, c'est là que vous vous attendez à ce qu'il soit Je pense donc que c'est la meilleure solution. Il n' y a actuellement aucune limite quant au nombre d'armes que vous pouvez récupérer dans ce jeu, et nous n'allons pas changer cela. Mais oui, donc je pense que cela fonctionne le mieux. Lisez-le ci-dessous si vous avez une meilleure façon de le faire, parce que j'ai en quelque sorte réfléchi à cette question pendant quelques mois, et c'est la meilleure chose que j'ai pu trouver. Mais si vous avez des suggestions, faites-le-moi savoir. Je serais heureuse de les entendre. OK, c'est tout ce qu'il y a à voir. Ensuite, nous verrons comment donner à notre joueur la possibilité de lâcher ces armes. 9. Armes de largage: Bonjour, les gars. Bienvenue dans cette série de tutoriels sur la création d'un gestionnaire d'armes FPS. Nous avançons assez loin dans cette série maintenant, qui est vraiment passionnant. Notre gestionnaire de FPS commence à vraiment bien paraître. Dans la leçon d'aujourd'hui, nous allons étudier la possibilité de lâcher nos armes. Allons-y directement. OK, donc dans notre état actuel, nous avons beaucoup de choses en place et nous avons presque terminé. Mais nous pouvons prendre des armes. Cependant, nous ne pouvons pas les laisser tomber. Et, vous savez, dans certains jeux, vous ne voudrez peut-être pas les abandonner, mais je vais vous montrer comment le faire si vous en avez besoin. Je vais l'ajouter à ce gestionnaire d'armes FPS juste pour le fun, et nous allons régler quelques points en gestionnaire d'armes FPS juste pour le fun, cours de route. La première chose à faire est donc d'ajouter une entrée. Je vais donc accéder aux paramètres du projet et je vais cliquer sur les paramètres du projet, puis je vais accéder à la carte d'entrée, et je vais taper Drop, et je vais cliquer sur annonce ici. Et je vais utiliser la lettre G. Je suis sûr qu'il y a une entrée commune. Et je vais passer au script du gestionnaire d'armes FES, et je vais créer une nouvelle fonction juste en dessous de notre fonction de ramassage. Et je vais juste dire « drop ». Et il va falloir une variable, et ce sera juste le nom de l'arme que nous allons lâcher, et ce sera une chaîne, puis je vais juste taper pass ici. Et je vais revenir directement à notre fonction de saisie ici et je vais taper Ieventdt is action pressed, drop, et je vais simplement appeler cette fonction Et je vais transmettre le nom du point actuel de l'arme. Assurez-vous simplement de vérifier que la variable est identique au nom de l'arme variable. Je me suis donc trompé . Je vais taper le nom de soulignement de l'arme C'est la variable que je dois transmettre. nous n'avons pas examiné les ressources en armes, vous pourriez donc l'oublier. Il suffit de le vérifier. La vôtre est peut-être différente. Ici, la première variable dont nous aurons besoin est une référence à celle de notre pile d'armes. Je vais donc taper var weapon underscore reef equals weaponstack point find name come a zero parce que nous allons commencer depuis le tout début du rayon Si cela renvoie un résultat négatif, c'est déjà un problème et nous n'allons rien traiter. Mais en général, cela va rapporter quelque chose de plus important que cela. Je vais donc taper Weaponstack point pop sur Weapon Ref, qui correspond aux armes positionnées dans la pile d' Cela permettra donc de simplement retirer l'arme de la pile d'armes afin que nous ne puissions plus y accéder. Et nous allons émettre le signal de mise à jour de la pile d'armes. Tu devras me supporter. Je m'en sors à l'ancienne dans beaucoup de ces vidéos. Je n'ai pas vraiment fait d'exercice. Il a été mis à jour. J' ai une annonce vidéo à ce sujet que j'ai publiée il y a quelques semaines, si vous voulez la regarder. Et nous allons passer à l'étape suivante ici. Je vais taper « arme larguée ». Maintenant, nous allons en fait avoir besoin de créer un corps rigide à ce stade Mais comment savoir quel corps rigide créer ? Nous allons devoir ajouter une autre variable à notre ressource d'armes. Alors sortons-les vers le haut. Je vais passer à l'un d'entre eux, et vous pouvez voir que nous n'avons rien. Nous avons un projectile à charger, ce qui revient au même. C'est juste un corps rigide si vous chargez un projectile. Nous allons donc passer au script de ressources sur les armes, où que vous l'ayez enregistré. Et nous allons simplement ajouter une autre variable ici. Nous allons taper sur export va, et je vais appeler mon arme Underscore Drop, et ce sera une autre scène de pack Et heureusement, nous les avons déjà créés dans notre série lorsque nous les avons créés pour pouvoir les récupérer. Nous pouvons donc générer exactement les mêmes. En fait, nous en avons besoin. Dans le cas contraire, nous ne pourrons pas les récupérer. Et je vais juste les mettre dans les armes correspondantes, et c'est tout. Je ne sais pas pourquoi il y a une boîte dessus, de toute façon. OK, nous pouvons donc revenir ici, et nous avons déjà saisi le nom de la liste des armes entre crochets Maintenant, nous pouvons simplement appeler cette variable que nous créons par point Weapon Underscore Drop Ensuite, nous devrons appeler instanciate. ne faut donc pas oublier de transférer actuelles et les munitions de réserve sur cette arme larguée Ils ont des valeurs de départ par défaut, mais à ce stade, nous allons vouloir les remplacer. Je vais donc taper les munitions actuelles du point de dépôt d'arme et les munitions de réserve de point de dépôt d'arme, et nous allons simplement les transférer Donc, nom entre crochets de la liste des armes, nom entre crochets munitions actuelles et de la liste des armes , munitions de réserve L'autre chose que nous devons faire avant d'arriver sur les lieux est de définir sa position. Sinon, il va juste apparaître au point zéro du monde. Je vais donc taper Weapondrop point set Global Transform. Et je vais faire en sorte que ce soit juste le point, c' est-à-dire le bout du canon de n'importe quelle arme Donc, ce sera en quelque sorte devant le joueur. Et je vais juste définir le point Get Global Transform. Et ce sera tout ce dont nous aurons besoin pour cela. Maintenant, nous pouvons ajouter ce corps rigide à la scène. Je vais donc avoir accès au monde. Je vais donc taper V world, et je vais obtenir et taper Gettree point get Root point Get child Zero Et ce ne sera que dans notre cas, le nœud mondial. Maintenant, nous tapons le point mondial Adgild et nous pouvons envoyer des armes Et maintenant, notre arme va réellement apparaître dans le monde. OK, maintenant que nous l'avons fait, nous pouvons réellement passer à cette arme. Je pense que c'est probablement la meilleure façon de procéder. Une fois que vous avez pris une arme, vous voulez passer à elle. Nous pouvons donc jouer l'animation de désactivation et il suffit d'appeler exit Et j'appellerai ça sur Weapon Stack Zero. J'ai oublié, mais si vous vous souvenez que l'animation de désactivation se produit réellement lors de la fonction de sortie, donc je n'ai pas besoin de l' appeler ici Je vais donc le supprimer , et je vais simplement appeler Exit Weapons Stack Zero. Et lançons le jeu et voyons comment nous allons procéder. D'accord. J'ai donc lâché l'arme. Je suis passé à l'arme de départ, et elle la récupère instantanément. Maintenant, si vous êtes Kenyad, vous vous rendez peut-être compte que l'arme tombe directement dans le nœud de détection des pick-up que nous avons créé dans le dernier épisode Nous allons donc devoir faire certaines choses pour nous assurer que cela ne se produise pas. Il y a un petit code sournois que nous pouvons glisser sur le corps rigide Et je vais juste passer à l'un d'entre eux. Ils utilisent tous le même script. Je vais donc simplement configurer une variable d'intimidation appelée Pick up ready, et je vais la définir sur false. Et je vais juste configurer une fonction prête ici et je vais taper await Getree point create Tr Et je vais juste attendre 2 secondes, et je vais taper timeout, puis juste en dessous, je vais taper Pickup ready is true Cela nous donnera donc une fenêtre de deux secondes qui permettra à l'arme de tomber au sol, elle ne s'activera pas lors de la détection du pick-up. Cependant, nous devons passer à notre gestionnaire d'armes FPS et nous assurer que lorsqu'un corps est détecté dans notre gestionnaire d'armes, nous vérifierons que son ramassage est prêt. Je vais donc revenir à cette fonction de détection du ramassage d'armes et taper I Body Dot Pickup ready, et je vais simplement saisir l'intégralité de notre code. Donc, à moins que ce ne soit vrai, nous n'allons pas récupérer l'arme. Et ça devrait nous permettre de nous en sortir. Et juste comme ça, l'arme tombe au sol et elle est visible. OK, donc on est en train de se débrouiller. Vous pensez peut-être que c'est terminé, mais nous en sommes loin. Il y a quelques autres choses que nous devons faire. Et vous pouvez probablement y réfléchir une petite seconde avec le code que j'ai écrit jusqu'ici. Que se passe-t-il si j'essaie de lâcher l'arme suivante ? Nous pouvons lâcher toutes les armes que nous avons, et nous reviendrons à l' arme de la pile zéro, savoir ce pistolet. Mais que se passera-t-il si nous essayons de le supprimer ? Que va-t-il se passer alors ? Alors lançons le jeu et jetons un coup d'œil. OK, donc j'ai lâché la première arme, et j'ai essayé de lâcher la deuxième arme. Vous ne pouvez pas vraiment l'entendre , mais il est écrit : «  Invalid get index zero on array ». Il n'y a donc rien à perdre. Nous devons donc faire certaines choses pour nous assurer que cela continue de se dérouler sans heurts. La première chose, qui est totalement facultative, mais je pense que c'est bien d'avoir une variable sur notre arme indiquant qu'elle peut même être lâchée. Il s'agit donc d'un choix de design. Tu n'as pas besoin de ça. C'est juste la première chose à laquelle je pense quand, vous savez, certains jeux proposent des armes qui ne peuvent pas être lâchées : pistolets, couteaux, etc. Je vais donc configurer une variable qui peut être ajoutée à nos ressources en armes. Si vous le configurez, vous devrez le cocher sur toutes les armes, sauf si vous ne voulez pas qu'il soit lâché. Je vais donc le laisser décoché sur Blaster N, afin qu'il ne puisse pas être supprimé Et en fin de compte, je dois juste l'ajouter au début de la fonction pour pouvoir dire que je dois y avoir accès puisque nous n'avons que la corde de l'arme. Donc, si la liste des armes, le point de soulignement du nom peut être supprimé, puis je peux simplement entrer par tabulation pour que tout cela puisse être vérifié L'autre chose que je veux faire est de m'assurer qu' une autre règle que nous pouvons également avoir ici est que la taille de la pile d'armes n' est pas égale à une. ne pouvons donc pas lâcher notre dernière arme. C'est également une autre option. Et maintenant, tout cela n'arrivera pas. Donc maintenant, on ne peut pas tomber. Nous pouvons lâcher cette première arme. Aucun problème Mais cette deuxième arme, quoi que vous fassiez, vous ne pouvez pas vous en débarrasser. Tant que cela ne résoudra un problème, le jeu ne plantera pas. Mais nous reviendrons toujours à ce pistolet, quelle que soit l'arme que nous possédons Et vous pouvez voir quelques autres problèmes comme celui-ci : nous avons récupéré l' arme, mais elle n' apparaît pas, et l'index de la pile d'armes n' est pas valide. Et vous commencerez peut-être à rendre compte que nous avons un petit problème avec cette pile d' armes parce que la façon dont nous y faisons référence n' est pas la meilleure pratique, et elle doit être corrigée. Sinon, vous pouvez voir que j'ai un indicateur d' arme plus un parce que je veux passer à l'étape suivante. Maintenant, indicateur d'arme lorsque nous le récupérons, mais nous n'avons pas deux armes, donc Il n'y a nulle part où aller dans ce cas, vous pouvez le supprimer. C'est probablement la première étape, mais nous allons toujours avoir des problèmes. Je pense donc que nous pouvons régler complètement ce problème. OK, alors réparons cette pile d'armes. Nous devons donc revenir au début du code. C'est l'une des premières choses que nous avons écrites. Alors ne vous inquiétez pas si vous ne vous souvenez pas de ce que tout cela fait. J' oublie parfois aussi. donc cette variable indicateur d'arme est donc cette variable indicateur d'arme qui contrôle notre pile d'armes. Lorsque nous voulons changer d'arme, nous augmentons cet indicateur d' arme, qui n'est qu'un int, puis nous à la pile d'armes et nous le transmettons à la fonction de sortie Nous sommes donc essentiellement , vous savez, compter jusqu'à un certain point et compter à rebours jusqu'à un certain point, ce qui est normal. Mais vous devez suivre cette position chaque fois que vous changez d'arme dehors du moment du changement d'arme. Ainsi, lorsque vous prenez une arme, que vous la lâchez ou que vous la lâchez, parce que vous ne savez jamais que vous voudrez peut-être ajouter quelque chose à l'avenir, vous devrez mettre à jour la pile d'armes pour savoir où elle se trouve. Et au moins dans ce cas précis, il existe des situations où vous pouvez ajouter cette arme n'importe où dans la pile. Tu ne sais pas où tu es. Nous allons donc trouver un moyen de mieux le faire, je pense. Donc, tout va être dû ici. Nous pouvons pratiquement supprimer cette ligne indicatrice d'arme ici. Et je vais taper Get Rf. C'est juste la variable que j'ai choisie. Tu peux l'appeler différemment si tu veux. Et je vais faire en sorte que cela corresponde à la pile d'armes. Point FID, et je vais chercher l'arme actuelle, le nom de l'arme. Je vais donc trouver l'arme actuelle que nous avons dans la pile, et elle me renverra ce numéro. Maintenant, il ne me reste plus qu'à l' incrémenter d'un ou à le réduire d'un Nous allons donc dire que Get Rf est égal à Min et que ce sera juste GetRef plus un, com et nous allons juste faire en sorte que je ne puisse pas être supérieur à la taille de la pile d'armes moins une Pas différent du code précédent que nous avions. Et nous pouvons faire exactement la même chose pour les armes baissées. Je vais copier cette variable Get Rf et nous l' appellerons à nouveau. Et cette fois, Get ref sera égal au maximum. De G F moins un ou zéro. Nous ne pouvons donc pas dépasser zéro. Sinon, nous l' diffuserons ou, pour être honnête, nous ne l'diffuserons pas. Nous finissons par le début, ce qui, pour être honnête, peut être quelque chose que vous voulez faire, mais nous ne voulons pas le faire. Je ne vais pas faire ça. Nous n'allons donc pas dépasser zéro, et nous allons le transmettre. Nous allons donc pouvoir accéder à l'arme suivante sans avoir à utiliser une autre variable pour la suivre, ce qui signifie que nous n'avons pas à nous soucier de notre position dans la pile lorsque nous prenons une arme ou la pile lorsque nous prenons lorsque nous la lâchons. D'accord. Évidemment, lorsque nous ouvrons une toile, nous utilisions l'indicateur d' arme, mais nous pouvons faire exactement la même chose qu' avec les entrées arme levée et arme basse. Ici, nous pouvons créer un livre intitulé Get Rf. Et nous pouvons simplement consulter la pile d'armes et trouver le nom du point de l'arme. Dans ce cas, ce sera l'arme actuelle. Nous pouvons consulter la pile d'armes, trouver l'arme actuelle, nom de l'arme. Comme avant. J'aurais pu le copier. C'est exactement le même code à chaque fois. Et maintenant, nous allons simplement ajouter cela et nous allons l' insérer à ce moment-là. Et maintenant, cela va simplement augmenter. Ce sera la prochaine arme de la pile lorsque vous en aurez pris une. Si vous êtes au milieu de la pile, c'est bon. C'est là que ça va aller. Et maintenant, nous en sommes à la baisse, et nous pouvons le faire ici également. Nous avons en fait un récif d' armes ici, mais je vais le refaire simplement parce que c' est ce que j'ai décidé de faire. Je peux travailler de toute façon. Je vais donc simplement taper Get Rf, stack d'armes, arme actuelle. Je vais le copier d'où on prend une arme parce que c'est exactement pareil. Ensuite, il ne nous reste plus qu'à récupérer Ref, c'est Max. exactement la même chose que lorsque nous lâchons une arme, c'est lorsque nous descendons. Il s'agit donc essentiellement du même processus. Vous le faites si fréquemment que vous voudrez peut-être configurer une fonction pour cela. Pour être honnête, c'est quelque chose que vous pourriez sérieusement envisager à ce stade, où cela apparaît autant de fois dans le code. Ce n'est donc pas la meilleure pratique, mais je pensais que c'était juste quelque chose qui devait être fait. Et cela résout vraiment ce problème. Maintenant, nous pouvons lâcher toutes les armes que nous voulons. Nous pouvons prendre toutes les armes que nous voulons. Nous n'avons pas à nous inquiéter trop à ce sujet . Ça va marcher à chaque fois. OK, donc je peux récupérer cette arme. Je peux lâcher cette arme. Et la pile d'armes n'en est pas affectée. Et c'est vraiment agréable. Et tu peux tirer avec l' arme. C'est vraiment cool. J'adore ça. Génial C'est bon, les gars Donc c'est comme ça que vous le faites, ou c'est comme ça que je le fais en ce qui concerne les stocks d'armes. Comment vous êtes-vous entendus ? J'adorerais connaître votre opinion à ce sujet. Nous approchons de la fin maintenant. Nous pouvons prendre une arme. La prochaine chose que nous devons envisager est ne récupérer que des munitions ordinaires, afin de recycler une partie du code que nous avons en cours Ce ne sera donc pas si difficile, pour être honnête. Nous y sommes presque, et ensuite nous pourrons peut-être ajouter quelques mains. Très bien, ça suffira pour cette leçon. Nous pouvons désormais lâcher nos armes, et nous ne devrions plus avoir aucun problème suivre notre position dans notre pile d'armes. Comment t'es-tu débrouillé ? Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire ci-dessous. J'apprécie toujours cela. 10. Munitions: Bonjour, les gars. Bienvenue dans cette série de tutoriels sur la création d'un gestionnaire d'armes FPS. Il s'agit de l'avant-dernier épisode de cette série de tutoriels, qui est assez excitant. Notre gestionnaire de FPS commence à vraiment bien paraître. Dans la leçon d'aujourd'hui, nous allons examiner comment récupérer des munitions dans les armes au sol et ajouter des éléments tels que des pinces à munitions que nos joueurs peuvent récupérer un des grands avantages de tout le travail que nous avons accompli jusqu'à présent est que nous n' aurons même pas besoin d' faire autant pour y parvenir. Et des munitions seront même ajoutées aux armes que nous avons dans notre pile, même si ce n'est pas l' arme actuelle, ce qui est incroyable Alors, commençons. Nous pouvons faire plein de choses différentes avec notre gestionnaire d'armes FBS Nous pouvons ramasser et déposer des armes. Mais à l'heure actuelle, il nous manque une fonctionnalité assez importante, savoir la possibilité à savoir la possibilité de récupérer les munitions contenues dans les armes et de simplement récupérer les munitions dans les pinces à munitions et autres objets de ce genre que vous pourriez avoir envie de mettre dans En réalité, une fois cela fait, vous pouvez simplement attacher ce script de munitions à presque n'importe quoi et vous pourrez en récupérer des MO Alors allons-y. OK, alors passons à notre gestionnaire d'armes FPS. Nous avons beaucoup de choses à faire en ce moment, mais nous allons modifier une partie du code de notre système de détection des ramassages. heure actuelle, lorsque nous marchons sur une arme, nous vérifions si elle peut être récupérée, puis si elle ne se trouve pas dans la pile d'armes, nous ajoutons à la pile d'armes et nous la changeons. Ces armes contiennent donc toutes des munitions. Ce que nous pouvons également faire, c'est vérifier si ces armes sont dans la pile, pour voir si nous pouvons leur prendre les munitions donc d'ajouter une instruction L juste en dessous , car nous disons pile d'armes est négative un, ce qui signifie qu'elle n'est pas dans la pile, nous la récupérons. Mais nous pouvons simplement dire « se pass », et j'écrirai simplement add ammo et nous ajouterons notre fonction au bas du script Je vais donc faire défiler le script vers le bas, et nous allons créer une fonction ici, que nous appellerons ajouter des munitions Et il va falloir une référence à une arme, qui ne sera que la ficelle. Nous appellerons cette arme, elle prendra également les munitions. Nous allons créer une variable ici, et nous l' appellerons simplement arme de soulignement, et nous la rendrons égale à la liste des armes, et nous utiliserons cette chaîne de référence pour accéder à la ressource Et maintenant, nous allons déterminer la quantité d'AO dont nous avons besoin. Nous appellerons la variable requise. Nous le rendrons égal au point d'arme Max AO et nous soustrairons les munitions de réserve d'armes Cela nous indiquera donc la différence entre la quantité de MO dont vous disposez et le maximum de MMO que vous pouvez emporter, c'est-à-dire la quantité dont nous avons besoin Ensuite, nous calculerons le reste, qui sera le maximum. Nous allons donc utiliser la fonction max ici, AO moins required, avec un minimum de zéro. De toute évidence, nous ne le ferons pas. Nous ne voulons pas entrer dans les points négatifs ici. Si nous utilisons tous les MO, reste sera nul. OK. Enfin, nous pouvons dire que la réserve de points d'arme Amo plus est égale à Min. Nous allons donc l' ajouter à notre réserve Amo. Assurez-vous d'ajouter le signe plus avant le signe égal. Munitions minimales ou requises. Ainsi, dans le cas où la quantité de munitions requise est inférieure au total des munitions disponibles pour être récupérées, nous voulons uniquement ajouter la quantité requise Nous ne voulons rien ajouter d' autre. Je vais juste passer à la fonction de rechargement et prendre le signal que nous y émettons, et je vais simplement le coller en utilisant toujours l'ancienne méthode Vous pouvez regarder ma vidéo sur la nouvelle façon de faire des signaux dans Gadot Four Enfin, nous reviendrons en restant. Je vais juste ajouter une valeur de retour sous forme d'int à cette fonction pour que nous sachions que si nous la modifions à l'avenir, elle devra certainement renvoyer un int pour que cela fonctionne. C'est un Gido totalement optimal. Tu n'as pas besoin de faire ça. Certaines personnes le font sur toutes leurs fonctions. J'ai tendance à le faire uniquement sur des fonctions je sais qu'elles doivent absolument renvoyer quelque chose. Et parfois j'oublie aussi. OK, donc après cette instruction L où nous voulons vraiment ajouter des munitions, je vais créer une variable appelée remaining again, et je vais la rendre égale à ajouter le nom de l'arme à point de corps de support de munitions Et la partie suivante, qui concerne les munitions, sera la somme des munitions actuelles à points corporels et des munitions de réserve à points de corps Et puis je vais dire que si le reste est égal à zéro, alors nous pouvons retirer l' arme du jeu. Nous avons donc récupéré toutes les munitions. Cela n'a aucune valeur. Supprimez-le. Enfin, nous pouvons dire que les munitions actuelles sont égales à zéro et que les munitions de réserve sont égales à zéro et que les munitions de réserve sont égales aux munitions restantes C'est donc le moyen le plus simple, je suppose que l'on pourrait dire, de le faire. Vous prenez toutes les munitions et vous les placez simplement sur les munitions de réserve pour l'arme au sol Cela fonctionnera plutôt bien. Je vais accéder à la télécommande juste pour que nous puissions voir les calculs se dérouler en temps réel. Jetons donc un coup d'œil à Blaster N. Comme vous pouvez le voir, je vais passer et vous verrez instantanément que le nombre de munitions de réserve est juste réglé Ce n'est pas grave, mais c'est quelque chose que nous pourrions envisager de changer plus tard. OK. Jetons maintenant un coup d' œil à ces rechargements ici Les choses semblent s'arranger mathématiquement . Nous pouvons aller le chercher. Il a 19 munitions et rechargez-le. On peut le filmer un peu. Nous en avons dix, et nous en prenons dix. Et si nous reprenons celui-ci, il ne nous en reste que dix. Et nous pouvons les échanger d'avant en arrière et nous pouvons voir que tout fonctionne à peu près comme prévu. Je n'aime pas trop renvoyer toutes les munitions à Zia Ce n'est pas grave, mais je pense que nous allons le changer. Mais, tu sais, c'est ça. C'est comme ça on ajoute des munitions. C'est tout ce que tu cherches à faire. Nous avons terminé. Mais il y a encore beaucoup à faire, alors restez dans les parages. OK, alors réparons ces munitions actuelles et réservons les munitions. Ce sera MI, qui restera. OK, nous allons donc avoir accès à la liste des armes, le nom des armes corporelles, le magazine à points. Ce sera donc soit ce qui restera, soit le maximum du magazine. Ensuite, nous faisons en sorte que les munitions de réserve soient égales à la valeur la plus élevée des deux valeurs suivantes : zéro ou moins le courant de point corporel AO Et cela fera en fait le contraire. Nous allons tout mettre dans les munitions actuelles, et les autres seront simplement dans des munitions de réserve Et personnellement, je pense que c' est un meilleur choix de design. Mais en fin de compte, ce genre de choses dépend uniquement de l'interprétation, sensation que vous voulez donner à votre jeu. Je pense que c'est bien plus cool si vous prenez une arme, vous pouvez la tirer tout de suite. Mais peut-être que vous voulez, peut-être pensez-vous que c'est plus réaliste si vous devez d'abord le recharger Tu sais, il y a un tas de choses différentes. Peut-être que vous essayez de créer un jeu plus difficile, un FPS de type Dark Souls, et vous voulez que ce soit, vous savez, de sorte que vous deviez faire un tas de choses avant même de pouvoir utiliser une arme. Par exemple, tu devrais le faire dans la vraie vie. Vous ne pouvez pas simplement prendre, je veux dire, parfois vous ne pouvez pas prendre une arme et commencer à tirer. Je ne sais pas Je n'ai jamais tiré avec une arme auparavant. Euh, c'est un petit fait. Quoi qu'il en soit, nous sommes en train de nous balader ici, donc c'est fait. Alors allons-y. heure actuelle, nous avons la possibilité de récupérer des munitions à partir d'armes Mais que se passerait-il si nous voulions simplement avoir un clip à munitions au sol que nous pouvons récupérer ou quelque chose comme ça ? Peut-être que nous voulons avoir une boîte pleine de munitions, mais je vais en parler dans ce clip ici Je vais copier Je vais enregistrer une copie de l'une de ces graines rigides parce que nous allons simplement récolter tout le code ici. Je vais donc enregistrer la scène comme je l'appelle clip Blaster N à la fin pour qu'il s'agisse du clip pour le blaster N, et je vais probablement supprimer ce modèle à la forme de collision, et je vais simplement ajouter le clip, rendre local et supprimer tous les nœuds et tout le reste juste pour y avoir le maillage Je vais le déplacer au centre de la scène et créer un maillage simplifié grâce au petit menu au milieu. Et la seule chose que nous devons ajouter à ce script pour qu'il puisse fonctionner fois avec ces clips et avec les armes est un énumérateur d'exportation Et ce sera un type d'arme, et ce sera soit une arme, soit des munitions Et cela s' appellera le type de ramassage. Et ce sera une ficelle, et je vais en faire une arme. n'est pas nécessaire que ce soit une chaîne. Je vais donc simplement le remplacer par une chaîne. Donc, cela va transformer toutes nos vieilles armes à corps rigide, et je peux changer celle-ci en munition, et le reste restera le même Cela fonctionnera donc avec eux. Vous pourriez créer un tout nouveau script, mais je pense que c'est plus simple pour que nous puissions le faire fonctionner avec tout ce que nous avons déjà écrit. Modifiez simplement ce script pour qu'il puisse fonctionner avec les deux. Nous avons donc cet énumérateur. Et nous pouvons intégrer ce clip à la scène. Je vais créer un nouveau nœud ici dans notre monde, et je l'appellerai munitions juste pour que nous puissions tout organiser Je vais faire glisser ce blaster et l'accrocher, pour en faire un enfant de ce nœud Et je vais juste le déplacer vers l'arrière qu'il soit un peu à l'écart. Je vais le retourner sur le côté pour qu' il soit beau et joli. Ensuite, il suffit de modifier un peu le code. Passons donc à la détection du pick-up. l'heure actuelle, nous cherchons à savoir si l'arme est empilée, mais nous voulons également nous assurer que le corps sur lequel nous marchons est également de type arme. Nous allons donc y aller : le type de pick-up est égal à celui de l'arme. Nous n'allons même pas vérifier si ce sont des munitions. Hein ? Ce qui est cool. Et je vais en mettre une copie pour que nous puissions la voir pendant que nous marchons. OK, nous devons donc voir ça. Lorsque nous marchons sur une arme, elle fonctionne toujours. Et nous voyons l'arme imprimée. Maintenant, nous pouvons passer à notre blaster N. Videz un peu ce clip pour avoir besoin de plus de munitions et marchons dessus Et regardez ça. On en sort juste dix d' affilée . C'est juste aussi simple que cela. OK, les gars, ça suffira pour cette leçon. Nous pouvons désormais récupérer des munitions pour les armes au sol, des pinces à munitions et d'autres objets de ce genre . Comment t'es-tu débrouillé ? Si vous avez des questions ou des commentaires, hésitez pas à laisser un commentaire ci-dessous, ou vous pouvez toujours rejoindre le Discord où vous pourrez me poser des questions plus directes et me suggérer des tutoriels sur lesquels je pourrais travailler à l'avenir. Je te verrai la prochaine fois. 11. Ajouter une plateforme: Bonjour, les gars. Bienvenue dans ma série sur la création d'un gestionnaire d'armes FPS dans le moteur de jeu Gadot Aujourd'hui, nous allons enfin ajouter une plate-forme de contrôle à ce gestionnaire de FPS. Je vais le faire avec un appareil, mais c'est surtout à des fins de démonstration. C'est incroyablement simple à faire, et il est facile de l'ajouter à tout moment dans votre projet. Je vous recommande donc de penser à ajouter un appareil de commande lorsque vous serez plus avancé dans votre projet, mais je vais vous le montrer maintenant afin que vous puissiez l'avoir comme référence. Ou vous pouvez également suivre. Parce que le but de ce gestionnaire d'armes est de faire en sorte qu'à ce stade de votre projet, vous puissiez ajouter une plate-forme sans rien changer ou sans avoir à mettre à jour les références d'animation intégrées à votre code. Alors, sans plus attendre, allons-y. Et la première chose que nous allons faire est ouvrir la scène des personnages du FPS. La première chose que nous devrions vraiment faire est de simplement enregistrer cette scène en tant que scène séparée. Je vais donc l'enregistrer en tant que personnage FPS avec ig, et je vais également mettre à jour le nom des nœuds du corps cinématique Enfin, nous allons supprimer le système FPS que nous avons actuellement. Et je vais également supprimer toutes les ressources et les armes de départ juste pour que nous revenions à une base zéro. Si vous n'aviez rien, nous partirons de zéro. J'ai un ig que j'ai créé l'année dernière. Ce n'est pas parfait. Comme vous pouvez le voir, quand je l'ouvre, c'est toujours un corps entier. Il va falloir y faire face. Je vais le mettre à disposition en téléchargement, mais ce n'est pas vraiment terminé, alors gardez cela à l'esprit. Donc, la première chose que je vais faire est l'intégrer à ma scène ici. Et je vais le faire glisser juste dans la scène racine pour qu'il ne soit pas trop transformé. Je vais juste réinitialiser la transformation, puis je vais la faire glisser en tant qu'enfant de la plate-forme FPS. Je vais faire en sorte que ce soit local. Je n'ai pas correctement préparé cette plate-forme, elle comporte donc de nombreux nœuds de contrôle, et je vais simplement les supprimer parce que nous n'en avons pas besoin. Ça vient de Blender. L'autre point, c'est que j'ai séparé le filet afin que nous puissions tout retirer sauf les bras car c'est tout ce dont nous avons besoin de ce filet. Je vais donc simplement sélectionner tous les autres maillages dont nous n'avons pas besoin, et je vais les déplacer. Donc, si vous avez votre propre équipement, vous n'aurez pas besoin de le faire. D'accord, donc avec tout ce qui reste, nous avons ceci. Nous pouvons commencer à travailler sur le positionnement réel de cet engin. Vous voulez donc cliquer sur l' appareil photo, puis sur Aperçu. Je reviens à notre appareil, et je vais juste le baisser un peu pour qu'il tienne un peu mieux dans le cadre. Je vais regarder une autre animation juste pour voir à quoi elle ressemble avec le pistolet Je pense que c'est un peu trop bas, alors je voudrais en parler un peu plus. Et aussi le fusil et je pense que je suis content de sa position. Une fois que j'en serai satisfait, je pourrai passer à l'étape suivante, et nous devrons connecter le lecteur d'animation au gestionnaire d'armes. Nous en avons donc un prêt via un lecteur d'animation ici. Je veux faciliter un peu les choses pour les futurs appareils que vous souhaitez installer ou pour tout autre travail que vous souhaitez effectuer Je vais donc simplement supprimer cette ligne. Et nous allons créer une nouvelle variable portant exactement le même nom, mais ce sera une variable d'exportation. Et nous allons le rendre équivalent à un lecteur d'animation. Maintenant, vous pouvez simplement glisser-déposer n'importe quelle animation de votre choix. OK, maintenant que c'est fait, nous pouvons le transférer dans le lecteur d'animation sous le gestionnaire d'armes. La prochaine chose que nous devons faire ensuite est mettre en place les ressources nécessaires pour les trois armes dont nous disposons. Nous avons un fusil, un pistolet et un AK 47 Je vais donc simplement me concentrer sur l'endroit où je trouve mes ressources en armes. Vous pouvez voir que mon responsable des pompiers est un peu nul, donc nous n'allons pas nous inquiéter. Je vais créer un nouveau dossier et l'appeler quelque chose comme Rig Weapon Resources. OK. Et je vais créer une nouvelle ressource, et je vais créer une ressource d'armes. Et je vais juste le nommer en premier 11, puis je vais le dupliquer et le renommer En fait, je vais l'appeler AK 47 parce que je connais déjà le nom de ces ressources. Je vais en créer un autre, je l'appellerai pistolet. Et celui que j'ai appelé, je vais juste le renommer en Rifle OK, cool. Génial Passons donc en revue et configurons-les. Nous devons nous assurer que ces animations correspondent exactement aux variables de la ressource d'armement Alors remontez. Le nom de l'arme, nous allons simplement l'appeler Rifle for the Rifle, et toutes ces animations. Donc, le soulignement du fusil s' active pour moi, et tout est assez cohérent avec le nom des variables, donc je vais juste passer en Donc, pour les animations que vous souhaitez jouer, assurez-vous qu' elles sont identiques à celles du lecteur d'animation. Je vais passer en revue et ajouter des munitions ici. C'est un truc assez basique, 30 ou 60 ans, ça va être un combat automobile. Il aura une portée de 2000, des dégâts d'un, et il sera cliqué sur Scan. Je n'ai pas encore d' arme à lâcher, donc je vais partir et je peux être lâchée sans contrôle pour le moment OK, je vais passer à l'arme suivante. Ça va être un pistolet. Cela peut prendre un peu plus de temps si vous ne connaissez pas le nom de vos animations. Je connais assez bien cet appareil, donc je vais juste les passer en revue et les nommer. Je n'ai pas d' animation hors tension pour tout cela. Je vais le laisser en blanc. Il n'est pas conseillé de laisser une animation vide pour cet équipement d'armes. Le comportement ne sera pas celui attendu. Donc, si vous avez, par exemple, une animation d' espace réservé, c'est également utile Je ne le sais pas. Nous allons donc simplement nous en tenir à cela. OK, le dernier est AK 47. Copiez-le et nommez également toutes ces animations. Et nous leur donnerons des munitions et des munitions de réserve pour commencer Faites en sorte que tout cela ne prenne pas feu. Portée 2000. est probablement un peu long pour un AK 47, mais nous allons faire avec, appuyer sur Scan, puis nous pourrons passer à la suite. Maintenant, nous devons revenir au gestionnaire d' armes et ajouter ces ressources au gestionnaire d'armes. Ainsi, sous cette taille, nous pouvons créer trois nouvelles ressources, et nous pouvons glisser-déposer ces ressources dans ce tableau. Et pour l'arme de départ, je vais créer les trois armes de départ . Je vais donc simplement taper leurs noms ici, pistolet, fusil et AK 47. D'accord. Les choses devraient donc fonctionner normalement. Je veux juste te montrer ici. Nous allons l'exécuter juste pour nous assurer qu' il démarre et qu'il n' y a aucun problème. Nous allons supprimer ce contrôleur FBS, et nous allons faire glisser le nouveau OK. Alors lançons le jeu et assurons-nous que tout fonctionne bien jusqu'à présent. Ça a l'air d'aller bien. Nous pouvons apparaître et tirer, et il semble que les scans fonctionnent et endommagent la boîte, mais nous ne pouvons pas encore changer d'arme, car nous n'avons pas encore configuré le signal Je voudrais présenter une nouvelle façon de connecter ce signal, car si vous changez souvent de plate-forme, si vous faites du prototypage, vous allez configurer cette connexion assez fréquemment Je vais donc passer à la fin de l'animation sur le lecteur d'animation, et je vais simplement renommer cette fonction pour la raccourcir un peu Je vais dire que l' animation est terminée. Et je vais copier le nom de cette fonction, et je vais trouver la fonction prête, et je vais taper Animation point animation finished. Ensuite, je vais dire point connect, puis je vais coller cet appelable une fois l' animation terminée Et maintenant, ce signal sera connecté au moment de l'exécution. Et nous devrions être là pour changer d'arme ici. Aucun problème. Et le tir automatique fonctionnera comme prévu. Vous pouvez voir que le fusil est un peu un laser. OK, cool. Donc c'est parti, les choses se présentent plutôt bien. Mais nous n'avons pas encore tout à fait terminé, car nous devons ajouter la possibilité lâcher des armes et de ramasser des armes. Nous allons donc devoir créer quelques corps rigides pour le largage de l'arme. Je vais créer une nouvelle scène avec un corps rigide, et je vais y intégrer les modèles que j'ai pour ces armes. Le premier est donc le pistolet. Je vais créer des notes locales et supprimer les notes des parents. Je viens de recevoir le maillage, et je vais cliquer sur le maillage et sur ce bouton qui dit maillage et créer un corps de collision Trimex simplifié Je vais renommer ce corps rigide en pistolet, et nous y ajouterons ce script J'ai un peu de mal à le trouver. Alors peut-être que si vous savez ce que c'est, tapez simplement « arme pick-up ». Le nom de l'arme sera pistolet. Le MMO actuel sera de neuf, le Mo de réserve sera de neuf Il peut s'agir de toutes les valeurs que vous souhaitez. C'est exactement ce que je choisis. Et le type de pick-up est évidemment une arme. OK, nous pouvons donc enregistrer cette scène. Je vais créer un nouveau dossier dans le dossier FBS arms et je vais l'enregistrer ici Cool. OK, nous devons donc en créer deux autres pour le fusil et l'AK 47. Alors je fais entrer ce fusil. Vous pouvez voir que le fusil est gigantesque parce que je ne l'ai pas encore traité. Faites comme avant, je vais faire glisser ce modèle. Je vais supprimer le nœud parent. Je viens donc d'avoir le maillage, et je vais en modifier l'échelle. Et encore une fois, je vais cliquer sur ce bouton de maillage, puis sur Créer un sommet de collision simplifié Et je ferai le suivant aussi pendant que j'y suis. Je vais apporter l'AK 47, pour le rendre local. Créez un maillage convexe de collision simplifié et remplacez-le par AK 47 Et assurez-vous également de renommer les nœuds. OK, donc je vais taper Arme Pickup et faire glisser ce script dans le corps rigide, et je l'appellerai Rifle 30, 30. C'est très bien Sauvegardez ça. Et puis pareil pour l'AK 47, je vais faire glisser ce script. Je l'appellerai AK 47. Je vais juste lui donner 20 armes de réserve, 20 de réserve, et évidemment c'est encore une fois une arme de type pick-up. Nous allons donc également enregistrer cela. Nous pouvons donc maintenant revenir au gestionnaire d'armes du FPS, et dans ces ressources, nous pouvons ajouter ces corps rigides comme armes à apparaître lors du largage OK, donc nous allons le traîner jusqu'au pistolet, pour assurer que vous avez le bon pistolet, sans projeter une charge Et n'oubliez pas, pendant que vous faites cela, de vous assurer que votre chèque peut être lâché afin de pouvoir réellement lâcher l'arme. Pour l'AK 47, je vais faire de même. Je vais le déposer sur Arme Drop et vérifier qu'il est possible de le déposer. OK, donc nous devrions être en mesure de les supprimer. N'oubliez pas non plus de configurer la couche de collision. Donc, à l'heure actuelle, la valeur par défaut est évidemment le monde. Ils doivent être définis comme quatrième couche de notre projet d'armes, et ils doivent masquer le monde, n'est-ce pas ? Je l'ai donc oublié sur le piston. Je reviendrai, et je vais le faire aussi pour l'AK 47, quatre et un comme masque, et nous devrions être en mesure de lancer le jeu. Maintenant que nous l'avons fait, nous pouvons lâcher l'arme, nous pouvons la récupérer, et tout se présente plutôt bien. OK, donc la prochaine étape que nous devons peaufiner est le point, que nous avons configuré pour lancer un jet de rayons pour les armes à scanner et aussi pour faire pour lancer un jet de rayons pour les armes à scanner apparaître les armes Vous auriez donc remarqué que ces armes sortaient en quelque sorte du visage devant la caméra parce que c'est là que se trouve le point final en ce moment. Je vais donc ajouter cette animation au lecteur d'animation. Vous verrez un avertissement indiquant que les modifications apportées aux pistes importées ne seront pas enregistrées. Cela signifie à peu près ce qui est écrit sur la boîte. Vous ne pouvez pas modifier les pistes importées, mais vous pouvez ajouter des pistes à des éléments qui n'ont pas été importés. Nous pouvons donc ajouter ce point à ces animations, et cela devrait fonctionner parfaitement. Ne vous inquiétez donc pas trop à propos de cette erreur. Je vais juste entrer , déplacer cette puce vers le devant de chaque arme et la saisir. Travailler dans un espace tridimensionnel peut être un peu fastidieux. Je recommande d'utiliser le changeur de perspective, les claviers, un, trois et sept OK, maintenant que c'est là, je peux revenir. J'aime toujours le mettre à zéro, zéro lors de la réinitialisation, pour qu' il revienne en quelque sorte à zéro si vous n'avez pas d' arme ou si vous préférez simplement être au centre. OK, donc je vais le faire pour le pistolet. Je vais passer au fusil, et je vais aussi le saisir dedans, pour m'assurer qu'il est dans la bonne position. n'est pas nécessaire que ce soit parfait. Tant que c'est dans une position générale, cela aura du sens pour le joueur. La dernière chose à faire est de lancer le ray cast d'un endroit où vous ne vous y attendez pas et de gâcher l'expérience du joueur. OK, donc maintenant, lorsque nous lâcherons l'arme, elle devrait tomber devant eux, et notre diffusion de rayons sera beaucoup plus efficace ou beaucoup plus précise, je dois dire. OK. C'est génial. Ajoutons donc également ces corps rigides à la scène afin de pouvoir les récupérer. Nous allons venir au monde. J'ai déjà la note sur les armes. Je vais entraîner ces trois corps rigides dans le monde, et je vais simplement les déplacer dans cette scène de manière à ce qu'ils soient positionnés, juste pour m' assurer que nous allons vérifier qu' fonctionnent normalement. OK, alors lançons le jeu ici. Vous pouvez voir que le fusil est un peu plus petit que l'AK 47. Il va falloir travailler là-dessus. On peut tirer, d'accord ? Nous réduisons le nombre de munitions ici. Je vais vider toutes mes munitions ici, et je vais marcher sur ce fusil pour m'assurer qu'il fonctionne comme prévu Il en a donc 60, je crois, et j'en ai trouvé 60 sans problème. OK, les gars, c'est tout pour cette leçon. C'est ainsi que vous pouvez ajouter une plate-forme à ce système de gestion d'armes FPS. Juste un rappel, bien entendu, que vous pouvez le faire à n'importe quelle étape du projet. Ne vous inquiétez donc pas trop si vous n'êtes pas prêt pour un équipement ou si votre équipement n'est pas complètement terminé. Je le fais juste pour vous montrer comment cela peut être fait. L'avantage de faire les choses de cette façon est que nous pouvons le faire à peu près est que nous pouvons le faire à peu près à tout moment sans rien casser ou avoir à entrer dans le code. Bien sûr, j'ai dû y apporter quelques modifications pour nous faciliter un peu les choses, mais à part ça, vous n'avez rien à faire, ce qui est formidable. Et je te verrai la prochaine fois. 12. Mélange: Comment ça va, tout le monde ? Nous sommes de retour cette fois avec un tutoriel un peu plus décontracté. Dans les commentaires, quelqu'un a demandé s'il était possible d'ajouter des attaques de mêlée au gestionnaire d'armes Et la réponse est oui, c'est très possible et super facile. Nous avons juste besoin de refactoriser quelques éléments pour le rendre un peu plus gérable OK, pour en revenir à notre projet, j'ai retiré les bras FPS ou la configuration des personnages de ce projet parce qu'il sera un peu plus facile de créer ces armes masculines sans elles. Je n'ai pas d'animations farineuses sur cette plate-forme en particulier. Nous sommes donc de retour avec notre bon vieux engin de tir flottant. Et je peux vous le démontrer ici, et je vous recommande de faire de même car, comme je l'ai dit, dans la vidéo précédente, il est beaucoup plus facile de simplement prototyper ces choses puis d' ajouter la plate-forme plus tard car c'est très facile d'ajouter la plate-forme. Nous allons donc passer à notre personnage FPS. Maintenant, j'ai déjà créé les animations pour ceux-ci. Je vais vous montrer comment ils sont assemblés afin que vous puissiez avoir une meilleure idée de la façon de procéder. Il s'agit donc principalement de jouer avec la position et la rotation. Et je pense que ce qui fonctionne le mieux c'est que vous passez instantanément à la pose saisissante. Donc, 0,2 seconde ou 0,1 seconde, même. Donc, vous êtes instantanément dans cette position, puis vous vous attardez pendant environ 0,2 seconde. Il y a un peu de mouvement, mais il n'y en a pas beaucoup. Et puis vous finissez par revenir à cette position. Et celui-ci fait un revirement. Alors tu as mis tout cela ensemble. Ça ressemble à ça. Où il y a une longue pause dans l'animation malienne. Et je vais vous en montrer quelques autres. OK, donc dans le fusil, jetons un coup d'œil à la frappe de Mei. Nous passons instantanément de cette position à celle-ci, nous nous attardons. Il y a un petit retour sur investissement. En fait, je pense que le flux continu vaut mieux que le retour dans ce domaine. Je ne suis donc pas d'accord à 100 % là-dessus, mais vous voyez l'idée. Vous vous attardez, vous faites une transition instantanée, vous vous attardez un peu, puis vous Je pense donc que ça a l'air vraiment bien. Nous allons configurer le code pour cela. Je vais juste demander la réinitialisation à ce sujet. OK, nous allons donc passer au gestionnaire de FPS. Mais avant d'écrire du code, nous devons passer aux paramètres du projet, ajouter une nouvelle action. Je vais juste l' appeler Capital MELEE, c'est ainsi que vous l'épelez Mali. Il faut que je m'en souvienne. Je suis vraiment mauvais en orthographe, donc tu dois t'excuser si je me trompe. Je vais en faire le FK. Et ce sera la clé que nous utiliserons pour faire une grève Nous pouvons revenir dans le script, et dans l'événement d'entrée, nous devrons ajouter un nouvel événement afin de pouvoir passer juste en dessous, et nous pouvons y aller si le point d'événement est actionné et Milly Et nous pouvons simplement écrire pass car nous n'avons pas encore de fonction à appeler. Alors je vais venir. Je veux que ce soit probablement après le rechargement J'ai l'impression que ça se lit plutôt bien alors. C'est vrai, funk, et je l'appellerai simplement Mali. Encore une fois, il ne prend aucune variable. C'est beau et simple. OK. Et je vais juste taper pass, et je reviendrai avant que nous n'oubliions. Et je vais juste écrire ici. Et j'appellerai cette fonction si l'action presse le Mali. Bien, passons donc à l' écriture de la fonction Mali. Celui-ci sera un peu différent des autres car nous allons l' autoriser à interrompre d'autres actions. Nous allons donc devoir refactoriser quelques fonctions, en particulier le rechargement, et nous allons également refactoriser la collision avec la caméra et les dommages causés par le scan, car nous devons les modifier pour accepter cette fonction et utiliser les fonctions de cadrage pour détecter ce qui se trouve devant Mais avant d'écrire quoi que ce soit dans la fonction, nous allons devoir ajouter ces animations à notre ressource d'armes. Je vais donc ouvrir la ressource sur les armes, qui se trouve ici. Je vais ajouter l'animation aux variables d'animation, ce qui est le top set ici. Je vais donc taper sur export Mali, viser, et ce sera une chaîne. Et l'autre chose que nous voulons faire, c'est endommager, nous allons également ajouter l'exportation, mais le Mali ne sait pas l'épeler. Je marque juste des dégâts. Et ce seront là les dégâts que cela causera. OK. Donc, dans le gestionnaire d'armes, nous allons simplement aborder chacune d'entre elles, et les conventions de dénomination sont les mêmes, afin que nous puissions détruire le Mali Blasted D, Mali l'épelle correctement. Appuyez sur Enregistrer. J'ai oublié de faire les dégâts, donc je vais le faire pour les deux. Je vais faire en sorte que ce soit comme un seul. Nous le ferons pour rien. Nous allons attaquer le nord du Mali et presque en endommager un. OK. Et je pourrais changer ça pour que ce soit si vous. Celui-ci est complètement foiré. C'est bon. Nous allons simplement le laisser tel quel. OK. Nous avons maintenant l'animation. Nous pouvons commencer à écrire cette fonction. Nous pouvons donc revenir ici et autoriser celui-ci à interrompre d' autres fonctions. Nous devons donc écrire une ligne différente par laquelle nous commençons normalement. Donc, normalement, nous vérifions que le lecteur d'animation n'est même pas en cours d'exécution. Mais dans ce cas, nous voulons seulement nous assurer que l'animation en cours n'est pas déjà l'animation du repas Nous ne pouvons donc pas interrompre un repas, mais nous pouvons interrompre à peu près tout le reste. Et si cela pose un problème, nous pourrons toujours y remédier plus tard. Animation player point G animation actuelle. Et nous allons nous assurer qu'il n'est pas égal au point d'arme actuel. Mi underscore et NIM. Assurez-vous donc que le nom de cette variable est le même que celui de la variable dans votre ressource d'arme. OK ? Et en dessous, nous allons dire jeu de points pour joueurs d'animation, et ce sera le point d'arme actuel, Milam Donc, si vous le souhaitez, vous pouvez simplement le copier et le coller dedans. OK. Assurons-nous donc d'abord que cela fonctionne comme prévu. Nous pouvons donc le constater. Nous pouvons tirer, et il jouera instantanément. Une chose que vous remarquerez tout de suite c'est que nous pouvons essentiellement raccourcir notre temps de rechargement en interrompant le rechargement Nous allons régler ce problème dans une seconde. Mais à part cela, cela fonctionne comme nous nous y attendions. Corrigons donc ce problème de rechargement avant d'aller plus loin. Le rechargement est donc juste au-dessus de nous. Maintenant, ce que nous faisons avec le rechargement, c'est essentiellement vérifier si aucune animation n'est en cours de lecture, puis nous rechargeons instantanément avant que l' animation ne soit Nous pouvons donc probablement copier cette variable. Nous pouvons accéder au signal d'animation terminé qui est déclenché par le lecteur d'animation, et nous pouvons ajouter une autre vérification ici. Nous pouvons dire si le nom du trait de soulignement NIM est égal au point d'arme actuel Reload NEM, puis nous allons simplement écrire la fonction par un pass out Nous allons déplacer ou refactoriser cette partie du code pour en faire une nouvelle fonction Nous appellerons donc cette fonction ici. Nous l'appellerons Calculer le rechargement du soulignement. Et nous allons essentiellement copier tout cela et le coller ici. Et je vais juste supprimer certaines de ces indentations. Vous pouvez appuyer sur l'onglet Shift pour ce faire. Et là où tout cela se trouve, nous pouvons le supprimer et appeler en fait, nous n'avons même pas besoin d' appeler la fonction. Nous supprimons simplement tout cela. OK ? Ensuite, nous appellerons cette fonction lorsque l' animation sera terminée, pas dès que nous appuierons sur le bouton. Cela nous empêchera donc d' interrompre le rechargement Nous allons donc recommencer. Je vais juste réduire le nombre de munitions Et maintenant, jusqu'à ce que cela se termine, peu importe ce que je fais. Je dois le laisser fonctionner. Peut-être que vous ne voulez pas que l'animation du Mali puisse interrompre le rechargement C'est vraiment à vous de décider si vous voulez le faire de cette façon ou si vous voulez simplement faire en sorte que le Mali ne puisse pas interrompre le rechargement, votre appel. Dans le cas contraire, poursuivons. Ce que nous devons faire dès maintenant, c'est refondre notre frappe au Mali en fonction de l'objet qui se trouve devant nous pour voir s' il peut être endommagé Nous avons une fonction, située juste dessous, appelée « Get Camera Collision », mais nous allons devoir la refactoriser un peu pour fonctionner avec le Mali et également avec nos armes à peau frappée Et travaillez également avec nos armes. Donc, à l'heure actuelle, la portée est simplement appelée dans la fonction Get Camera Collision. Ce que nous voulons faire, c'est probablement simplement le supprimer et le remplacer par une autre variable. Nous l'appellerons simplement souligner portée de soulignement de l' arme ou minuscules, et nous le mettrons simplement dans la fonction ici, portée de soulignement de l' ici, Et maintenant, il sera également diffusé sur le lieu de tournage, car c'est là que nous devons fournir cette variable maintenant. Nous pouvons donc le coller à nouveau dans la gamme d'armes actuelle à points d'armes. Et maintenant, lorsque nous lançons notre attaque au Mali, nous pouvons également utiliser cette fonction et utiliser une portée plus courte. Je vais donc revenir à la ressource en armes, ajouter cette variable, ainsi que les dégâts infligés au Mali. Donc, dans la section portée des armes, je vais créer une autre variable que je vais appeler expert Va Mali. Gamme Single L. Je vais en faire un float cette fois, et je vais également le rendre égal à 1,5 comme valeur par défaut, car c'est généralement suffisant. Si vous voulez qu'elle soit plus longue, par exemple pour une arme plus grosse ou quelque chose comme ça, vous pouvez l'augmenter. Et l'exportation de ce que nous appelons le Mali souligne les dégâts. Je veux dire, cela peut être un int, et je ne lui donnerai pas de valeur par défaut. Nous devons revenir à nos armes, et nous verrons simplement qu'ils ont le champ de tir Mali, et je vais juste fabriquer celui-ci. J'aurais peut-être pu donner une valeur par défaut de un. OK. Maintenant, nous allons y retourner. Nous pouvons réellement écrire notre fonction ici. Nous pouvons entrer et partir par caméra. Une collision équivaut à une collision avec une caméra et nous appellerons le point point de l'arme actuel Mei underscore Range Maintenant que nous pouvons le faire, nous devons encore modifier un peu plus la collision de notre caméra. Comme vous pouvez le constater, pour le moment, nous ne faisons que rétablir la position de cette intersection, qui n'est pas tout à fait ce que nous voulons. Cette position est importante, mais nous voulons également savoir quel est l'objet réel avec lequel nous sommes entrés en collision Maintenant, nous recommençons en cas de collision avec le bouton Scan. Mais nous ne voulons pas utiliser cette fonction parce qu'elle utilise le point à puces, ce que nous ne voulons pas utiliser dans la section sur le Mali. Nous avons donc juste besoin de l'objet. Nous l'avons déjà. Il est en fait renvoyé par cette fonction ici pour provoquer une collision avec la caméra. Donc, ce que nous voulons en fait changer cela, c'est renvoyer un tableau contenant à la fois l'objet d' intersection et sa position. Donc, ce que je vais faire, c'est changer cela pour en faire un tableau. La collision de barres sera donc en fait un tableau. Nous allons passer au crochet, et ce sera le collisionneur. Je vais mettre ça en premier. Collisionneur de points d' intersection et position du point d'intersection. OK. Alors maintenant, nous allons le retourner. Il n'est pas content. J'ai besoin d'une virgule N'oubliez pas la virgule. D'accord, nous renvoyons maintenant deux objets. Pour la fin du tableau, nous allons devoir renvoyer une valeur nulle au début car nous devons toujours renvoyer un tableau. Nous ne voulons pas nous embrouiller, et je vais le remplacer un tableau en tant qu'objet de retour. Ensuite, dans le parachute, nous allons devoir changer les choses ici plutôt que de provoquer une collision avec la caméra, nous devons simplement envoyer une position comme avant. C'est donc le deuxième objet du tableau. C'est le numéro un. Et pareil, il suffit de connaître la position de collision de la caméra. Faites un petit test pour voir si cela fonctionne. Tout fonctionne normalement. C'est ce que nous voulons. Ça fait toujours des dégâts, tout ce genre de choses. C'est donc positif, assurez-vous que tout fonctionne correctement lorsque vous prenez en compte ces facteurs de toiture. Cela renvoie donc maintenant un objet et nous pouvons entrer collision avec une caméra de type I. Zéro entre crochets. Maintenant, nous pouvons calculer la direction. Je peux donc taper que la direction est égale à. Nous allons faire des doubles crochets ici, une collision avec la caméra, et ce ne sera que la position. Entre crochets, un point moins, et je vais appeler le point propriétaire Logal Transform Soulignez la transformation. Origine du point. La raison en est qu'une autre, j'ai trouvé que cela fonctionnait mieux que utiliser le gestionnaire d'armes comme objet pour l'origine de la transformation globale. Ensuite, nous allons simplement taper point normalized. C'est donc notre orientation. Ensuite, nous pouvons simplement répercuter les dommages causés par le scan informatique. Maintenant, nous allons devoir refactoriser cela parce que cela prend un collisionneur, une direction et une position Nous savons donc ce qu'est le collisionneur. Nous pouvons appeler zéro les crochets de collision avec une caméra. La direction est la variable que nous venons de créer, et la position correspond à la valeur de collision de la caméra. Mais nous avons un autre problème ici. Les dégâts de scan d'un coup utilisent les dégâts ponctuels actuels de l'arme. Nous voulons la remplacer par une autre variable. Nous allons taper un trait de soulignement de l'arme pour souligner les dégâts. Ça va s'énerver, alors nous allons le taper ici. Vous devriez être content, et nous verrons cela, avoir un problème ici. Donc, pour résoudre ce problème, il suffit d' appeler Current Weapon Dot. Encore une fois, assurez-vous simplement que le nom de la variable est le même. Et puis ici, pour Milli, nous pouvons appeler l'arme actuelle Milly Dégâts. Dégâts au Mali. Ce n'est pas une fonction. Fermez les crochets. OK. Nous avons donc maintenant séparé les dégâts des dommages causés par le hitscan. Nous pouvons l'appeler dans un endroit distinct, comme dans la fonction Mali. Nous pouvons donc maintenant appliquer les dégâts infligés au Mali lorsque nous détectons un impact. Donc, si nous lançons le jeu maintenant , nous le testons simplement pour nous assurer qu'il fonctionne. On dirait que c'est le cas. Nous pouvons maintenant passer à cette boîte. C'est toujours un bon indicateur savoir si les choses fonctionnent ou non. Nous pouvons venir ici et nous avons une petite erreur. Qu'est-ce que nous avons ? Index, j'ai fait une faute d'orthographe. C'est une erreur très courante de ma part, Origin, origin. Essayons encore une fois. Il suffit de se diriger directement vers la boîte cette fois, et vous verrez qu'elle fonctionne correctement. Désolé pour cette erreur. Et maintenant, les choses se présentent bien. Nous l'avons fait interagir. Nous pouvons nous rendre à l'une de ces cibles pour confirmer qu'elle fonctionne. Et maintenant, nous avons des dégâts au Mali. C'est cool, non ? Et tout semble fonctionner normalement. L'un des principaux défauts de ma façon de faire les choses ici, auquel j'ai beaucoup réfléchi et à laquelle j'ai finalement décidé que c'était la meilleure solution, principalement pour les besoins de ce que nous faisons ici, c'est que nous utilisons simplement un casting pour cela Donc, si je suis si mal à ce point, il ne détectera aucun hit parce que je suis en train de refondre au centre de l'écran Ce qui peut ne pas être très agréable pour le joueur. Il suffit donc de le remplir, et si vous n'en êtes pas satisfait, vous devrez probablement le remplacer par une zone deux D autour d'une plage plus large, ou vous devez projeter plus de rayons. Il y a donc quelques options, mais pour l'instant, c'est ce que nous allons faire, juste pour une solution simple. Je suppose que si vous effectuez une attaque au corps à corps, je suppose que si vous effectuez une attaque au corps à corps, il je suppose que corps à corps, je suppose que si vous effectuez une attaque au corps à corps, y a de fortes chances que l'objet que vous essayez de toucher se trouve très près de l'écran Il est donc fort probable qu' il couvre le centre de l'écran. Ce n'est évidemment pas toujours le cas. Il va donc y avoir quelques ratés lorsque vous n'êtes pas tout à fait là et si vous êtes un tout petit peu hors de portée C'est donc évidemment un problème de portée, comme le problème avec le raycast venant juste du centre Alors peut-être que tu devrais faire plus de ray cast. Si vous trouvez que c'est un problème, faites-le moi savoir, je peux probablement faire une vidéo mise à jour dans laquelle nous ajouterons une zone à laquelle nous ajouterons une zone trois D pour détecter ce qui se trouve devant nous à la place. Ou nous pouvons refactoriser la collision avec la caméra pour effectuer plus de diffusions si nous le voulons C'est aussi une option. Mais à part ça, c'est comme ça qu'on procède. OK, les gars, c'est ainsi que j'ai implémenté taxe Milia dans notre manette d'armes FPS. Comment y es-tu allé ? Faites-le moi savoir dans les commentaires. Comme toujours, si vous souhaitez poser des questions ou laisser des suggestions, vous pouvez vous lancer dans le Discord Merci beaucoup d'avoir regardé 13. Merci de nous avoir regardé: OK, les gars, c'est tout pour le moment. Nous avons enfin créé un gestionnaire de FPS complet. gros accessoires, si vous êtes arrivés jusqu'à la fin de cette vidéo Il ne reste plus que le jus, que je vais couvrir dans les prochains mois. Quoi qu'il en soit, c'est tout pour cette partie. Premièrement, je fais une petite pause, et je reviendrai bientôt avec P two. Je suis Isaac de Shaft Games, et je te verrai la prochaine fois.