Aujourd'hui, nous allons fouiller dans Kismet d'UDK et examiner les événements en développement, ce qu'ils sont, comment nous pouvons les créer et comment nous pouvons les gérer. Vous apprendrez à créer et gérer presque tous les types d’événements dans UDK afin de pouvoir créer des niveaux complets, complexes et entièrement scriptés, en commençant par le niveau simple que nous allons créer dans ce tutoriel..
En UDK, un événement est une situation particulière que vous définissez (évidemment dans Unreal Kismet) et qui a des conséquences pour le jeu ou d'autres éléments du jeu. Vous pouvez créer des événements n'importe où dans un niveau, sans limitation. Vous pouvez les diviser en trois groupes différents: événements précompilés, événements déclencheurs ou événements InterpActor. Dans ce didacticiel, nous allons tous les couvrir pour vous donner une vue complète de la création et de la manipulation d’un événement..
Événements pré-compilés: Si vous ouvrez Unreal Kismet (le K vert situé en haut de la fenêtre UDK, près de l'icône du navigateur de contenu et de l'icône Matinée) et que vous cliquez avec le bouton droit de la souris sur un espace vide de la fenêtre Kismet, "Nouvel événement", vous verrez par exemple de nombreux événements prêts à l'emploi regroupés sous les noms "Acteur", "AI" ou "Pion". Acteur, AI et Pawn sont dans ce cas la partie déclencheuse d'un événement et sans eux l'événement ne commence pas du tout. Donc, un exemple: si vous voulez qu'un événement commence quand un ennemi meurt, vous devrez aller sous "Pion", car un ennemi s'appelle un pion et choisissez Mort.
Pour notre but, créer un 512 x 512 x 256 Cube évidé.
Maintenant, ajoutez un Point-Light dans la pièce en tenant le L touche du clavier, puis cliquez avec le bouton gauche de la souris dans la pièce que nous venons de créer (le cube).
Déplacez la lumière au centre de la pièce, puis reconstruisez l'éclairage (avec ou sans Lightmass, ce n'est pas important.)
Terminé? Maintenant, nous pouvons commencer avec notre premier événement UDK, un événement pré-compilé dans ce cas. L'événement précompilé le plus couramment utilisé par un codeur UDK est l'événement "Level Loaded". Comme vous pouvez l’imaginer, cet événement commence lorsque le niveau est chargé. Commençons donc par ceci: allez dans Unreal Kismet, cliquez avec le bouton droit de la souris sur un espace et allez à Nouvel événement> Niveau chargé.
Maintenant, vous devriez avoir un nœud appelé "Level Loaded" dans votre Kismet. Si tel est le cas, vous pouvez maintenant voir que ce nœud a trois sorties ou, mieux dans ce cas, trois conditions pour activer l'événement: lorsque le niveau est chargé et visible, au début du niveau ou lorsqu'il existe une réinitialisation du niveau. Ces conditions sont assez explicites, en fait, la seule différence entre "Loaded and Visible" et "Début de niveau" est un petit retard de la seconde par rapport à la première. Alors que la troisième concerne un rechargement du niveau, mais nous n'entrerons pas dans cette fonctionnalité maintenant.
Nous allons créer une sorte d'alarme qui demande au joueur de se préparer à l'arrivée d'un ennemi. Pour ce faire, créons un autre nœud en allant (toujours avec un clic droit), sur Nouvelle action> Annonces vocales> Annonce de lecture.
Maintenant, cliquez sur ce nœud et dans la barre de texte d'annonce, écrivez "Préparez-vous! Un robot vient vous tuer!" Avec cela, nous demandons à UDK d’écrire un texte au centre de l’écran pour informer le joueur qu’un robot vient le tuer, il doit donc se préparer au combat..
Maintenant, créez un autre nœud d’annonce de 6 parties, comme nous l’avons déjà fait.
Dans le dernier, écrivez sous le texte d'annonce "Prenez le fusil de choc et le combat va commencer!".
Dans les autres nœuds, nous allons utiliser un compte à rebours sonore, qui est inclus dans les actifs UDK. Alors, allez dans le "Navigateur de contenu" et écrivez dans la barre de recherche "compte à rebours". Dix Wave Soundnode Wave apparaîtront, puis sélectionnez le "Compte à rebours 5".
Maintenant, retournez dans Kismet et cliquez sur le premier nœud d'annonce de lecture vide. Allez dans la barre de son de l'annonce et cliquez sur la flèche verte à droite. Le nom de la SoundNode Wave devrait apparaître dans la barre. Ce que vous venez de faire, c’est de dire à UDK de jouer le son plusieurs fois (cinq) afin de créer un compte à rebours..
Alors maintenant, faites ce que vous venez de faire avec le nœud précédent, avec les quatre nœuds d’annonce de lecture restants. Rappelez-vous que vous devez d'abord sélectionner le numéro du compte à rebours dans le navigateur de contenu (le quatrième, le troisième, le deuxième et le premier), puis cliquer sur le noeud dans Kismet, puis dans l'annonce Annonce, cliquer sur la flèche verte pour insérez-le.
Terminé? Bien. Maintenant, il est temps de connecter l'événement aux nœuds que nous avons créés. Connectez la sortie de "Début de niveau" au premier nœud d'annonce.
Ensuite, de la sortie de votre premier nœud d’annonce à l’entrée du deuxième nœud d’annonce et ainsi de suite (comme indiqué ci-dessous).
Maintenant, quand le niveau commence, nous avons une série d’annonces qui conseillent le joueur, mais si nous les laissons telles qu’elles sont, une seule annonce sera affichée à l’écran et le joueur ne recevra pas toutes les informations que nous voulons lui donner. . Afin de tous les afficher, nous devons définir un délai entre nos nœuds d'annonce. Donc, faites un clic droit sur la sortie (le rectangle noir) du premier nœud d'annonce, puis cliquez sur "Définir le délai d'activation". Dans la fenêtre qui apparaît, définissez le délai sur 2.0 et cliquez sur OK.
Répétez l’étape précédente pour les connexions entre les autres nœuds, mais cette fois, définissez le délai sur 1,0, parce qu'il y a le compte à rebours!
Événements déclencheurs: Il s'agit des événements particuliers utilisés pour déclencher une partie d'un élément qui n'apparaît pas pendant le jeu, appelé "déclencheur". Les déclencheurs sont des cylindres, mais pas des cylindres appropriés. Ils ont un rayon et une hauteur, mais ne sont pas un pinceau ni un objet sur lequel vous pouvez appliquer un matériau. Le rayon et la hauteur de ces cylindres décrivent la zone dans laquelle un joueur, un pion ou tout ce que vous voulez peut activer l'événement relatif. Donc, dans ce cas, les joueurs ou les pions ne sont pas directement responsables du début d'un événement, mais ils le déclenchent par contact avec la zone définie du cylindre du déclencheur..
Rappelez-vous que vous avez écrit dans la dernière annonce "Take the Shock Rifle?"? Eh bien, je suppose qu'il est temps d'en mettre un dans votre niveau. Mais d’abord, mettons un déclencheur dedans, qui nous aidera à définir la zone dans laquelle le joueur activera le prochain événement et où nous allons créer notre lance-roquettes. Alors, faites un clic droit sur le sol, allez dans "Ajouter un acteur" et sélectionnez "Ajouter un déclencheur". Maintenant, vous remarquerez qu'une icône étrange est apparue, ce qui semble être un commutateur, avec un rectangle rouge qui entoure un cylindre vert.
Maintenant, comme je l'ai dit précédemment, le cylindre est la zone qui définit s'il y a ou non contact avec le joueur et qui active un événement. Faisons le plus gros. Faites un clic droit sur la gâchette, allez dans "Propriétés" et sous "Composant de cylindre", modifiez le rayon et la hauteur de cylindre à votre guise 60-60.)
Probablement comme avec le mien, le cylindre de votre déclencheur est tombé dans le sol. Alors glissez-le et quand vous avez fini, retournez à Kismet.
Sur un espace vide près de la dernière annonce, cliquez avec le bouton droit de la souris et aller à Nouvelle action> Acteur et sélectionnez "Actor Factory".
Cliquez sur ce nœud, puis dans la barre d’usine, cliquez sur la flèche bleue à gauche et sélectionnez "UTFactoryPickup". Cliquez ensuite sur "Usine" pour l'agrandir, puis dans la barre d'inventaire sélectionnez "Fusil de choc"..
Ensuite, sélectionnez le déclencheur dans le niveau et revenez à Kismet, faites un clic droit sur l'entrée "SpawnPoint" et cliquez sur "Nouvel objet Var utilisant un déclencheur"..
Maintenant, connectez la sortie du dernier nœud d’annonce à l’entrée du nœud Actor Factory. Eh bien, nous avons enfin notre fusil de choc qui apparaît après la dernière annonce.
Maintenant, nous devons générer un ennemi après que le joueur ait pris le fusil de choc. Pour ce faire, nous allons créer un événement déclencheur. Avec le déclencheur sélectionné dans le niveau, allez à Kismet et cliquez avec le bouton droit de la souris sur un espace vide, puis sous "Nouvel événement utilisant le déclencheur", sélectionnez "Toucher". Cela signifie que l'événement sera activé lorsque le joueur entrera dans la zone du cylindre. Un autre choix courant est "Utilisé", cela signifie que lorsque le joueur est devant le cylindre et qu'il appuie sur la touche E, il peut activer un événement. Les autres sont des choix mineurs, qui ne sont pas utilisés fréquemment avec un déclencheur.
Créez maintenant un autre nœud "ActorFactory", mais cette fois dans la barre d’usine, sélectionnez "UTActorAI". Et dans les propriétés de l'usine, définissez ControllerClass: sur "UTBot", PawnClass: sur "UTPawn" et vérifiez la propriété "GiveDefaultInventory".
Ensuite, donnez-lui un nom (je vous laisse la décision) et connectez l'événement "Trigger Touch" à "Actor Factory". Maintenant, faites un clic droit sur la sortie "Spawned" et sélectionnez "Create New Object Var".
Dans votre niveau, sur le côté opposé de votre déclencheur, faites un clic droit sur le sol, allez dans "Ajouter un acteur" et sélectionnez "Ajouter un chemin".
Maintenant, revenez à Kismet, cliquez avec le bouton droit de la souris sur "Point d’apparition" et sélectionnez Nouvel objet Var en utilisant Pathnode. Enfin, vous avez créé votre premier événement déclencheur et faites en sorte que votre ennemi apparaisse après que le joueur a pris l'arme. La seule chose qui reste à faire est de donner à l'ennemi une cible..
Dans Kismet, faites un clic droit et allez à Nouvelle action> Misc et sélectionnez "Trace".
Connectez la sortie "Finished" de ActorFactory à l'entrée "Trace", puis connectez l'entrée de démarrage de "Trace" à la variable objet de "Spawned" d'ActorFactory..
Maintenant, faites un clic droit sur un espace vide et allez à Nouvelle action> AI et sélectionnez "Démarrer le tir à".
Ensuite, faites un clic droit sur un espace vide, allez à Nouvelle action> AI et cette fois sélectionnez "Arrêtez de tirer".
Connectez la sortie "non obstrué" à "Démarrer le tir à" et "obstrué" à "Arrêter le tir".
Connectez la sortie de "Démarrer" et "Arrêter le tir" à l'entrée de "Trace" (comme indiqué).
Réglez leur délai de sortie sur .5.
Connectez l'entrée cible de "Démarrer" et "Arrêtez de tirer" à la variable d'objet générée..
Maintenant, faites un clic droit sur un espace et allez à Nouvelle variable> Player, et sélectionnez "Player".
Connectez l'entrée "Fire At" à la variable player. Soudainement, vous avez créé un bot (un ennemi) qui apparaît dans le cylindre de déclenchement et recherche ensuite le joueur. Et s'il est obstrué par quelque chose, il ne tire pas, alors que s'il n'est pas obstrué, il peut tirer librement sur le joueur..
Maintenant, si vous essayez votre niveau, vous verrez que parfois l'ennemi apparaît avant la fin du compte à rebours. Cela se produit car le déclencheur est déjà activé et n'attend pas la fin de la séquence Kismet précédente. Pour l'activer uniquement lorsque le compte à rebours est terminé, allons à Kismet, sélectionnez "Trigger Event Touch" et décochez "Enabled" dans ses propriétés..
Cliquez ensuite avec le bouton droit de la souris (comme toujours dans Kismet), puis accédez à Nouvelle action> Basculer et choisissez "Basculer".
Connectez maintenant la sortie du dernier nœud d’annonce de lecture à l’entrée "Activer" du nœud à bascule, et la sortie "Événement" de "Bascule" à "Déclencheur". Maintenant, vous avez un événement déclencheur qui est activé lorsque la séquence de l'annonce de lecture est terminée.
Evénements InterpActor, StaticMeshActor et Brush: ceux-ci sont similaires aux événements déclencheurs. En fait, ces événements sont toujours activés par contact avec une zone, mais pas avec une zone cylindrique, mais avec une zone personnalisée par rapport à InterpActor (ou StaticMeshActor). ou pinceau) choisi. Le seul grand changement, mis à part les différents domaines avec lesquels vous pouvez entrer en contact, est que le déclencheur est visible pendant le jeu et que vous pouvez établir un contact physique avec lui tout en jouant..
Enfin, nous sommes arrivés à InterpActor Events. Pour ce type d'événement, nous allons créer une sorte de division entre le niveau et le scinder en deux parties, mais de manière singulière! Alors, allez dans le "Navigateur de contenu" et recherchez "thinwire", lorsque la recherche est terminée, double-cliquez sur "Thinwire16" et faites un clic droit dans votre niveau et sélectionnez "Ajouter InterpActor".
Maintenant, recherchez "connecteur" et sélectionnez le premier résultat de votre recherche, ajoutez cet InterpActor deux fois.
Ajustez ces trois éléments comme indiqué dans l'image ci-dessous pour diviser la pièce en deux parties. (Pour cela, redimensionnez le thinwire en Y par 1.2)
Avec ces éléments toujours sélectionnés, appuyez sur F4 ouvrir les propriétés.
Maintenant, allez dans "Collision" et réglez le "Type de collision" sur "Toucher tout"..
Ce que vous venez de faire est de placer trois InterpActor dans le niveau avec un type de collision défini sur Toucher tout. Ce qui signifie que dans ce cas, un événement sera activé si le joueur ou une autre personne touche les fils ou les connecteurs. Maintenant, nous devons créer cet événement! Sélectionnez les trois acteurs que nous avons créés, accédez à Kismet, cliquez avec le bouton droit de la souris sur un espace vide, puis sélectionnez "Nouvel événement avec InterpActor?", Puis sélectionnez "Toucher"..
Faites un clic droit dans Kismet, allez à Nouvelle action> Acteur et sélectionnez "Modifier la santé".
Sélectionnez le nœud "Modifier l'état de santé" et définissez le montant des dommages sur 100 (vie du joueur), vous pouvez également définir le type de dommage sur Écrasé ou Telefragged si vous souhaitez qu'un son soit joué lorsque le joueur reçoit les dégâts..
Maintenant, faites un clic droit dans Kismet, allez à Nouvelle variable> Player et sélectionnez "Player".
Reliez l'entrée "cible" de "Modify Health" à cette variable.
Connectez toutes les sorties "touchées" des événements InterpActor au nœud "Modify Health". Maintenant, quand quelqu'un touche les fils ou les connecteurs, le lecteur mourra. Pas si égal, mais à ce niveau, l'ennemi ne bouge pas, il se tient juste devant vous et vous tire dessus, il ne peut donc pas toucher les fils. Alors que le joueur doit faire attention quand il se déplace.
Il reste encore un problème à résoudre. Si vous mourez en touchant les câbles ou les connecteurs et que vous réapparaissez, en touchant l'InterpActor qui vient de vous tuer, vous ne le tuez plus. En effet, nos événements ne sont activés qu'une seule fois. Pour résoudre ce problème, allez dans Kismet, sélectionnez tous les nœuds d’événement InterpActor et allez sous «Événements de séquence»..
Ces propriétés sont les mêmes dans le nœud de départ de chaque événement: "Max Trigger Count" signifie combien de fois l'événement peut être activé. "Délai de déclenchement" signifie combien de temps une activation dure avant la suivante. "Activé" signifie évidemment que s'il est coché, l'événement est activé, sinon il est inactif. "Priorité" est utile lorsque plusieurs événements commencent au même moment, et enfin "Joueur ou côté client uniquement" signifie qui peut activer cet événement. Pour notre but, définissez le "Max Trigger Count" sur 0 (infini).
Enfin, le niveau est terminé. Enregistrez, reconstruisez votre éclairage de niveau et vos chemins et vous êtes prêt à essayer le niveau.!
Maintenant, faites un clic droit, et allez à "Nouvelle condition" et sélectionnez "Est en vie".
Connectez la sortie finie à l'entrée "Is Alive" et connectez la sortie "True" à "Trace", et "Démarrer le feu à" et le "Stop Fire" à l'entrée "Is Alive". Connectez également le joueur "Is Alive" à l'objet "Frayé". Maintenant, vous avez enfin corrigé l'erreur (essayez!) Et vous êtes prêt à jouer votre niveau!