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.