Dans ce tutoriel, vous allez créer une logique afin d'animer une plateforme mobile et de l'activer avec les objets de jeu que vous avez créés dans le tutoriel
L'adoption d'un flux de travail modulaire vous permet de modifier l'échelle, le mouvement, la destination et la vitesse de la plateforme depuis le hublot. Vous pouvez en outre choisir la plateforme que chaque interrupteur active en un seul clic.
Cette liberté d'action vous permet de modifier votre niveau et de tester sa fonctionnalité à la volée pendant la phase de conception. Des choix de conception efficaces et flexibles améliorent la vitesse et la résilience de votre pipeline de développement.
Avant de commencer
Dans ce tutoriel, nous supposons que vous maîtrisez les concepts suivants, abordés dans les sections précédentes de la page Concevoir une aventure de type énigme :
Materials
Blueprints ;
Variables
Interfaces de blueprint
Mode Play in Editor (PIE)
Vous aurez besoin des ressources suivantes, créées dans les tutoriels Créer une clé et
BP_SwitchBP_CubeBP_KeyBPI_InteractionM_BasicColorM_EmissiveColorM_BasicColor_Blue
Créer une plateforme mobile
Apprenez à créer une plateforme mobile et à l'activer avec un interrupteur pour obtenir une fonctionnalité simple, comme le déplacement d'un joueur à travers un niveau. Il est possible de combiner l'interrupteur, le cube et la plateforme pour créer une fonctionnalité complexe, comme une énigme de plateforme semblable à celle que vous trouverez à la fin de ce tutoriel.
Pour que votre flux de travail reste modulaire, vous allez commencer par créer une instance de matériau et une classe de blueprint pour la plateforme.
Créer une instance de matériau
Procédez comme suit pour créer une instance de matériau pour la plateforme :
Dans le navigateur de contenu, sélectionnez AdventureGame > Concepteur > Matériaux, faites un clic droit sur M_BasicColor et sélectionnez Créer une instance de matériau.
Nommez l'instance
M_BasicColor_Orange. Double-cliquez sur l'instance pour l'ouvrir dans l'éditeur de matériau.Développez Valeurs de paramètre de vecteur global et activez Couleur pour la changer.
Définissez le paramètre Couleur sur sRVB hexadécimal
F76E00FF.Enregistrez l'instance et fermez-la.
Votre dossier de matériaux doit maintenant ressembler à ceci :
Configurer une classe de blueprint
Procédez comme suit pour créer une classe de blueprint pour la plateforme :
Dans le navigateur de contenu, accédez à AdventureGame > Concepteur > Blueprints et créez un nouveau dossier appelé
Plateformes.Faites un clic droit sur le dossier Plateformes et créez une nouvelle classe de blueprint.
Dans la boîte de dialogue Choisir la classe parente, sélectionnez Acteur et nommez le nouveau blueprint
BP_Platform.Double-cliquez sur
BP_Platformpour l'ouvrir dans l'éditeur de blueprint.Dans l'onglet Composants, créez un maillage statique en cliquant sur Ajouter, puis recherchez le
cubeet sélectionnez-le.Nommez le maillage
Plateforme.Dans le panneau Détails, sous l'en-tête Matériaux, définissez Élément 0 sur
M_BasicColor_Orange.
Pour pouvoir personnaliser rapidement l'échelle de votre plateforme depuis l'éditeur de niveau et créer des plateformes de différentes tailles, vous pouvez utiliser une variable modifiable :
Dans l'onglet My Blueprint, accédez à l'en-tête Variables. Cliquez sur le bouton + pour créer une variable et nommez-la
PlatformScale.Définissez son type de broche sur Vecteur et cliquez sur l'icône d'œil pour que l'œil s'ouvre.
Dans le panneau Détails, en regard de Catégorie, ajoutez-la à la catégorie
Configuration.Compilez votre blueprint, puis définissez la valeur par défaut de PlatformScale sur
2,2,0,1.Dans le graphique Script de construction, faites glisser la broche d'exécution du nœud Construction Script et créez un nœud Set World Scale 3D (Platform).
Faites glisser la broche Nouvelle échelle sur le nœud Set World Scale 3D et créez un nœud Get PlatformScale. Les nouvelles valeurs d'échelle sont ainsi appliquées au composant de maillage Plateforme.
Enregistrez et compilez le blueprint.
Votre graphique de script de construction doit maintenant ressembler à ceci :
Si vous copiez cet extrait dans votre graphique, vous devez relier le nœud d'entrée Construction Script à Set World Scale 3D.
Si vous revenez dans l'onglet Hublot du blueprint, le script de construction est appliqué aux nouvelles valeurs d'échelle de la plateforme.
Dans le navigateur de contenu, faites glisser une instance de votre plateforme dans votre niveau, ou dans la pièce 1 si vous suivez le niveau fourni. Dans le cadre de ce tutoriel, assurez-vous également d'avoir une instance de BP_Switch et de BP_Cube dans le niveau :
Construire de façon logique
Lorsqu'un objet se trouve sur l'interrupteur, la plateforme doit se déplacer d'avant en arrière entre deux positions. Avant de commencer la construction, vous devez concevoir la logique qui sous-tend cette interaction en vous posant les questions suivantes : que doit-il se passer, qui est impacté et quand ?
Voici la logique de la plateforme :
Si BP_Platform est active :
Si
BP_Platformse trouve à son emplacement de départ, elle se déplace vers l'avant vers son emplacement de fin et attend 2 secondes.Si
BP_Platformse trouve à son emplacement de fin, elle se déplace vers l'arrière vers son emplacement de départ et attend 2 secondes.
Si BP_Platform n'est pas active, BP_Platform s'arrête.
Le temps d'attente doit être défini pour permettre au joueur de monter sur la plateforme ou de mettre un objet dessus. Vous pouvez modifier le temps d'attente en fonction de la difficulté de votre tâche dans le jeu. Plus tard dans ce tutoriel, vous utiliserez le temps pour définir la vitesse de la plateforme, qui peut également avoir une incidence sur la difficulté du jeu.
Étant donné que vous avez déjà créé BP_Platform, vous devez disposer d'une variable booléenne pour déterminer si elle est active ou non.
Pour créer une variable booléenne, procédez comme suit :
Dans l'onglet My Blueprint de
BP_Platform, cliquez sur le bouton + pour créer une variable et nommez-laActive.Sélectionnez le type de broche Booléen et cliquez sur l'icône d'œil pour ouvrir l'œil.
Dans le panneau Détails, définissez cette catégorie sur
Configuration.Compilez votre blueprint et vérifiez que la valeur par défaut Active comporte une coche (true).
Ensuite, vous allez définir les emplacements entre lesquels la plateforme doit se déplacer.
Définir les emplacements
Votre logique préliminaire indique que la plateforme nécessite deux emplacements :
Un emplacement de départ
Un emplacement de fin
Pour que votre flux de travail reste modulaire, vous allez définir l'emplacement de départ en référençant l'instance de la plateforme. Vous définirez l'emplacement de fin en référençant un acteur de point cible.
Un point cible est un acteur sans rendu qui dispose de données de coordonnées. Vous pouvez utiliser des points cibles comme points d'apparition, pour définir des chemins d'animation, guider les mouvements d'IA ou contrôler l'orientation des articulations dans les squelettes de CI.
Vous devez également disposer de vecteurs pour stocker les données de coordonnées de l'instance de la plateforme et de l'acteur de point cible, et les implémenter dans BP_Platform :
Nom de la variable | Type | Explication |
StartLocation | Vecteur | Cette variable stocke les coordonnées de BP_Platform. |
EndLocation | Vecteur | Cette variable stocke les coordonnées de l'acteur de point cible. |
TargetPoint | TargetPoint | L'acteur de point cible qui désigne votre emplacement de fin dans le niveau. |
Pour configurer les variables, procédez comme suit :
Dans l'onglet My Blueprint, cliquez sur deux fois sur le bouton + pour créer deux nouvelles variables.
Nommez ces variables
StartLocationetEndLocation.Définissez les types de broches sur Vecteur.
Créez une variable appelée
TargetPointet définissez le type de broche sur Point cible (référence d'objet). Ce type de variable permet de référencer des acteurs de point cible dans les blueprints.Sélectionnez la variable
TargetPointet accédez au panneau Détails. Sélectionnez la catégorieConfigurationet cochez la case Instance modifiable.
Votre liste de variables doit maintenant ressembler à ceci :
Une fois vos variables créées, vous pouvez ajouter la logique :
Accédez au graphique d'événements et supprimez les nœuds Event ActorBeginOverlap et Event Tick Vous n'en aurez pas besoin. Conservez le nœud Event BeginPlay.
Faites glisser la broche d'exécution du nœud Event BeginPlay et créez le nœud Set StartLocation.
Faites glisser la broche Emplacement de départ et créez le nœud Get Actor Location. Vérifiez que le champ Cible est défini sur Autonome.
Faites glisser la broche d'exécution de Set StartLocation et créez Set EndLocation.
Faites glisser la broche Vecteur d'emplacement de fin et créez Get Actor Location.
Faites glisser la broche Cible de Get Actor Location et créez Get TargetPoint.
Enregistrez et compilez le blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Vous pouvez maintenant créer un acteur de point cible dans votre niveau pour que le blueprint le référence :
Dans la barre d'outils principale de l'éditeur, cliquez sur le bouton Ajouter.
Recherchez le point cible et sélectionnez-le pour en créer un dans votre niveau.
Déplacez le point cible à l'emplacement où vous souhaitez que la plateforme s'arrête. Pour suivre l'exemple de niveau, définissez le paramètre Emplacement du point cible sur
-6 200,570,-5,5(en bas de la pièce 1).Dans le hublot, sélectionnez l'instance de
BP_Platformet déplacez-la à l'emplacement où vous voulez que la plateforme commence.Après avoir sélectionné
BP_Platform, accédez à la section Configuration du panneau Détails en regard de Point cible et recherchez l'instance du point cible dans votre niveau (ou utilisez la pipette pour la sélectionner dans le hublot).
Vous allez ensuite créer le déplacement de la plateforme.
Créer le déplacement
Dans votre logique, vous devez déplacer la plateforme de quatre manières différentes :
Déplacer vers l'avant
Wait
Déplacer vers l'arrière
Arrêter
Pour signaler les événements vers l'avant, vers l'arrière et arrêt, vous pouvez créer des événements personnalisés. Vous pouvez créer l'événement d'attente ultérieurement en utilisant une variable.
Pour créer des événements personnalisés, procédez comme suit :
Faites un clic droit dans le graphique d'événements de la
BP_Platformet sélectionnez Ajouter un événement personnalisé.Nommez le nouveau nœud
evMoveForward. L'événement doit apparaître sous l'en-tête Graphique d'événements de l'onglet My Blueprint.Créez deux autres événements personnalisés. Nommez-les
evMoveBackwardetevStop.Dans la mesure où vous souhaitez que la plateforme ne se déplace que si la variable booléenne
Activeest définie sur true, faites glisser la broche d'exécution du nœud Set End Location et créez un nœud Branch.Sur le nœud Branch, faites glisser la broche Condition et créez un nœud Get Active.
Faites glisser la broche True du nœud Branch et créez un nœud EvMoveForward pour déclencher cet événement.
Enregistrez et compilez le blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Si vous testez votre plateforme en mode PIE, rien ne se passe. Cela est dû au fait que les événements personnalisés ne signalent qu'un événement ; ils doivent disposer d'une logique supplémentaire pour décrire le déplacement de la plateforme.
Créer un mouvement vers l'avant
Pour piloter vos événements personnalisés, vous devez utiliser un nœud Timeline. Dans une chronologie, vous pouvez créer deux images clés qui représentent les emplacements de départ et de fin de la plateforme.
Pour créer une chronologie, procédez comme suit :
Faites un clic droit dans le graphique d'événements, puis recherchez et créez un nœud Add Timeline.
Veillez à ne pas sélectionner le composant Ajouter une chronologie.
Nommez le nœud de chronologie
TM_MovePlatform.Une fois le nœud de chronologie créé, une référence TM_MovePlatform apparaît dans la liste Composants du panneau My Blueprint. Comme pour les autres composants, vous pouvez utiliser cette référence dans le graphique pour obtenir ou définir ses propriétés.
Reliez la broche d'exécution de evMoveForward à la broche Lecture de TM_MovePlatform.
Reliez la broche d'exécution de evStop à la broche Arrêter de TM_MovePlatform.
Reliez la broche d'exécution de evMoveBackward à la broche Vers l'arrière.
Double-cliquez sur TM_MovePlatform pour ouvrir l'éditeur de chronologie. Votre chronologie est vide ; appuyez sur le bouton Piste et sélectionnez le type de piste Piste float.
Nommez cette nouvelle piste
Alpha.Définissez la durée de la piste sur
1,00. Cette valeur correspond à la durée de lecture de la chronologie du début à la fin, en secondes.Pour ajouter une image clé, faites un clic droit sur la chronologie et sélectionnez Ajouter la clé au float de courbe 0.
Définissez les paramètres Temps et Valeur de l'image clé sur
0,0.Faites un clic droit sur la clé et définissez le paramètre Interpolation de clé sur Auto. Un effet d'adoucissement est ainsi ajouté aux courbes du graphique, ce qui ralentit le déplacement de votre plateforme au début et à la fin du mouvement.
Ajoutez une deuxième image clé, mais définissez les paramètres Temps et Valeur sur
1,0et le paramètre Interpolation de clé sur Auto.Enregistrez et compilez le blueprint.
Votre chronologie doit ressembler à ceci :
Pour créer un mouvement, vous devez demander à la plateforme de se positionner progressivement à un nouvel emplacement à chaque image du jeu, le long d'un chemin linéaire, entre les emplacements de début et de fin. Si vous maîtrisez les logiciels d'animation, vous pouvez comparer cette méthode à une interpolation. Pour ce faire, vous devez utiliser un nœud Lerp (interpolation linéaire).
Les nœuds Lerp utilisent une valeur alpha, comme celle que vous avez créée dans TM_MovePlatform, pour fusionner progressivement deux valeurs. Vous pouvez utiliser les nœuds Lerp pour interpoler les couleurs, les matériaux ou, dans ce cas, les emplacements.
Pour créer un nœud Lerp et le connecter à votre logique existante, procédez comme suit :
Revenez à l'onglet Graphique d'événements. Faites glisser la broche Mettre à jour de TM_MovePlatform et créez un nœud Set World Location (Platform).
Faites glisser la broche Nouvel emplacement de Set World Location et créez un nœud Lerp (Vector).
Faites glisser la broche A du nœud Lerp et créez un nœud Get StartLocation.
Faites glisser la broche B du nœud Lerp et créez un nœud Get EndLocation.
Pour utiliser la valeur alpha que vous avez créée dans TM_MovePlatform, reliez la broche Alpha de TM_MovePlatform à la broche Alpha du nœud Lerp.
Enregistrez, compilez et fermez l'éditeur de blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Votre logique est désormais suffisante pour tester la plateforme. Dans la barre d'outils principale de l'éditeur, cliquez sur le bouton de lecture pour passer en mode PIE. À l'exécution, votre plateforme doit se déplacer vers l'emplacement de fin. Étant donné que la plateforme se déplace maintenant très vite, cette animation est peut-être difficile à observer. Vous allez ensuite ajouter un mouvement vers l'arrière afin que la plateforme se déplace en continu lorsqu'elle est active. Plus tard, vous ajouterez une variable pour ralentir ce mouvement.
Vous pouvez faire des essais en déplaçant le point cible dans votre niveau pour voir l'effet.
La chronologie que vous avez définie dure une seconde et la plateforme met toujours une seconde pour passer de son emplacement de départ au point cible. Plus vous éloignez la plateforme du point cible, plus elle doit se déplacer rapidement pour couvrir cette distance.
Pour l'instant, la plateforme ne se déplace que dans une seule direction. Vous allez maintenant faire en sorte qu'elle se déplace vers l'arrière.
Créer un déplacement vers l'arrière
Pour inverser le mouvement de la plateforme, vous devez disposer d'une logique qui vérifie dans quelle direction se déplace la chronologie. Si elle se déplace vers l'avant, la logique doit appeler evMoveBackwards. Si elle ne se déplace pas vers l'avant, la logique doit appeler evMoveForward. Vous pouvez utiliser un nœud Branch pour effectuer cette vérification.
Pour créer un nœud Branch et le connecter à votre logique existante, procédez comme suit :
Faites glisser la broche Terminé du nœud TM_MovePlatform et créez un nœud Branch.
Faites glisser la broche Condition du nœud Branch et créez un nœud Equal (Enum).
Reliez la broche Direction de TM_MovePlatform à la broche A du nœud Equal.
Vérifiez que la condition est définie sur Vers l'avant.
Faites glisser la broche True du nœud Branch et créez un nœud evMoveBackwards.
Faites glisser la broche False du nœud Branch et créez un nœud evMoveForward.
Étant donné que le mouvement ne doit avoir lieu que si la variable booléenne
Activeest définie sur true, vérifiez d'abord les points suivants avec un autre nœud Branch :Pour ajouter un nouveau nœud entre TM_MovePlatform et le nœud Branch, faites glisser la broche Terminé et ajoutez un nouveau nœud Branch. Les connexions existantes sont conservées et le deuxième nœud Branch est ajouté entre les deux.
Faites glisser la broche Condition du nouveau nœud Branch et créez un nœud Get Active.
Enregistrez et compilez le blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Cependant, votre logique préliminaire indique que la plateforme doit attendre un certain temps avant de changer de direction. Vous allez donc créer ce délai.
Créer un délai
Vous pouvez utiliser un nœud de délai pour demander à la plateforme d'attendre et une variable de type float pour définir le temps d'attente que vous souhaitez lui attribuer.
Pour créer un nœud de délai et un float, procédez comme suit :
Dans l'onglet My Blueprint de
BP_Platform, cliquez sur le bouton + pour créer une nouvelle variable et nommez-laWaitDuration.Définissez son type de broche sur Float.
Dans le panneau Détails, ajoutez-la à la catégorie Configuration et activez Instance modifiable.
Compilez pour accéder à la valeur par défaut de la variable et définissez-la sur
2secondes. Il s'agit du délai que nous utilisons dans l'exemple de niveau.Pour ajouter le délai avant que la plateforme change de direction, faites glisser la broche Terminé de TM_MovePlatform et créez un nœud Delay.
Faites glisser la broche Durée du nœud Delay et créez un nœud Get Wait Duration.
Enregistrez et compilez le blueprint.
Votre liste de variables doit maintenant ressembler à ceci :
Votre graphique d'événements doit maintenant ressembler à ceci :
Testez votre plateforme en mode PIE. Elle doit se déplacer vers l'avant, attendre, puis se déplacer vers l'arrière, attendre et répéter ce mouvement indéfiniment.
Enfin, vous devez activer votre plateforme via BP_Switch.
Connecter l'interrupteur à la plateforme
La plateforme ne doit se déplacer que lorsque BP_Switch est activé par un joueur ou un autre objet. Vous allez utiliser les fonctions d'interface de blueprint que vous avez créées dans le tutoriel Active pour indiquer à quel moment la plateforme doit se déplacer vers l'avant et s'arrêter.
Pour que les messages BPI_Interaction de l'interrupteur lancent et arrêtent le déplacement de la plateforme, procédez comme suit :
Dans la barre de menus de l'éditeur de blueprint de
BP_Platform, cliquez sur Paramètres de classe.Dans le panneau Détails, sous l'en-tête Interfaces, cliquez sur le menu déroulant en regard de Interfaces implémentées. Recherchez et ajoutez BPI_Interaction.
Un nouvel en-tête Interfaces est créé dans l'onglet My Blueprint.
Dans l'en-tête Interfaces, faites un clic droit sur fnBPISwitchOn et sélectionnez Implémenter l'événement pour l'intégrer au graphique d'événements en tant qu'événement.
Procédez de la même façon pour fnBPIswitchOff.
Depuis la broche d'exécution de fnBPISwitchOn, recherchez et créez le nœud Set Active. Cochez la case en regard de Active pour définie la valeur sur true.
Depuis la broche d'exécution du nœud Set, recherchez et créez le nœud EvMoveForward.
Depuis la broche d'exécution de fnBPISwitchOff, recherchez et créez le nœud Set Active.
Depuis la broche d'exécution du nœud Set, recherchez et créez le nœud EvStop.
Enregistrez et compilez le blueprint.
La logique qui sous-tend BP_platform est terminée. Maintenant que vous avez fait le plus gros du travail, vous pouvez modifier la ou les plateformes activées par un interrupteur, leurs emplacements de début et de fin, ainsi que leur échelle, le tout depuis le hublot. Ces paramètres étant directement accessibles depuis le hublot, vous pouvez concevoir et tester votre niveau sans avoir à modifier les blueprints en permanence.
Vous allez maintenant remplir la matrice de l'interrupteur que vous avez créée dans le tutoriel
Remplir la liste des objets d'interaction
Vous pouvez remplir la matrice Liste des objets d'interaction de l'interrupteur avec n'importe quel objet de votre niveau que vous souhaitez activer à l'aide de l'interrupteur, à condition qu'il dispose d'une logique qui le sous-tend. Dans ce cas, vous devez sélectionner l'instance de BP_Platform dans votre niveau.
Pour remplir la matrice, procédez comme suit :
Sélectionnez votre plateforme dans le hublot. Dans le panneau Détails, décochez la case Active (false). De cette façon, la plateforme ne s'active pas à l'exécution et attend le signal de l'interrupteur.
Sélectionnez votre interrupteur dans le hublot. Dans le panneau Détails, sous la section Configuration,en regard de Liste des objets d'interaction, cliquez sur le bouton Ajouter un élément (+) pour créer un nouvel index dans la matrice.
Dans le menu déroulant, recherchez
BP_Platformou utilisez l'outil Pipette pour le sélectionner dans le hublot.
Passez en mode PIE pour tester votre objet de jeu final. Lorsque vous marchez sur l'interrupteur (ou placez un cube physique dessus), la plateforme doit se déplacer d'avant en arrière (et s'arrêter lorsque vous ou le cube quittez la plateforme).
Essayez d'activer ActivateOnce sur BP_Switch. Vous remarquez que, comme l'interrupteur reste actif, la plateforme continue de se déplacer même si vous en descendez.
En fonction de l'emplacement du point cible dans votre niveau, un problème peut se produire. Si vous placez le cube physique sur la plateforme et marchez sur l'interrupteur, la plateforme se déplace si vite que le cube tombe. Une physique peu pratique peut frustrer les joueurs et les empêcher de terminer votre jeu d'énigme.
Dans la prochaine section, vous allez déboguer ce problème.
Débogage
Dans cette section, vous allez effectuer des ajustements et ajouter des fonctionnalités à votre cube physique et à votre plateforme en vue de minimiser les problèmes susceptibles de frustrer vos joueurs lorsqu'ils tentent de résoudre votre énigme.
Ajuster l'amortissement
Lorsque vous envoyez le cube sur la plateforme, vous constatez qu'il est très léger et facile à manipuler. Cette sensibilité à la force peut poser problème lorsque le joueur manipule le cube pour résoudre une énigme ou lorsqu'il se déplace sur une plateforme.
Pour augmenter l'amortissement sur le cube, procédez comme suit :
Ouvrez
BP_Cubedans l'éditeur de blueprint et sélectionnez le maillage statique Cube.Dans le panneau Détails, sous Physique, définissez les paramètres Amortissement linéaire sur
0,7et Amortissement angulaire sur0,8. Ces valeurs suggérées peuvent varier en fonction des besoins du projet.Enregistrez et compilez le blueprint.
Testez à nouveau le cube. S'il continue de tomber de la plateforme, ajustez sa vitesse.
Ajuster la vitesse
Étant donné que la vitesse de la plateforme a une incidence sur le cube physique, ralentissez la vitesse de la plateforme pour que le cube reste dessus.
Pour ajuster la vitesse de la plateforme, procédez comme suit.
Dans le
graphique d'événementsde BP_Platform, créez une variable appeléeTimeToTarget.Définissez son type de broche sur Float.
Compilez votre blueprint.
Dans le panneau Détails, activez le paramètre Instance modifiable, ajoutez-le à la catégorie Configuration et définissez la valeur par défaut sur
2,0. Cette valeur suggérée varie en fonction de votre niveau.Accédez au groupe de nœuds situé en haut de votre graphique qui commence par Event BeginPlay.
Faites glisser la broche d'exécution du nœud Set End Location. Recherchez et créez un nœud Set Play Rate (Timeline).
Il est possible que vous deviez désactiver l'option Sensible au contexte pour trouver ce nœud.
Faites glisser la broche Cible du nœud Set Play Rate, puis recherchez et créez un nœud Get TM Move Platform.
Faites glisser la broche Nouvelle fréquence de Set Play Rate et créez un nœud d'opérateur Divide. Définissez sa valeur A sur
1,0.Faites glisser la broche B du nœud Divide et créez un nœud Get TimeToTarget.
Enregistrez et compilez le blueprint.
Votre graphique d'événements doit maintenant ressembler à ceci :
Testez votre niveau en mode PIE ; vous constatez que l'interaction entre la plateforme et le cube a changé. Le cube doit désormais rester sur la plateforme lorsque celle-ci se déplace.
Étant donné que vous avez inclus la variable TimeToTarget dans la catégorie Configuration, vous pouvez facilement ajuster la vitesse de la plateforme et la tester depuis le hublot lorsque vous concevez votre niveau.
Exemple d'énigme
Nous avons créé une énigme pour la pièce 1 en utilisant l'interrupteur, le cube, la plateforme et les ressources clés décrits dans ce tutoriel. Si vous souhaitez copier notre énigme plutôt que de créer la vôtre, consultez les sections ci-dessous pour savoir comment placer les ressources exactement là où nous les avons positionnées. Dans cette section, nous abordons une approche que nous avons révélée lors des tests de jeu et qui a influencé nos choix de conception.
Pour copier notre énigme, nommez vos blueprints comme suit :
BP_Switch
BP_Cube
BP_Platform
BP_Key
Si vous n'avez pas créé vos ressources selon les instructions de ce tutoriel, il est possible que l'extrait ne soit pas copié comme prévu.
Obstacles, cubes et clés
Au cours de la phase de test, nous avons découvert que les joueurs avaient du mal à contrôler les mouvements du cube physique. Nous avons donc ajouté des murs pour guider le cube lorsque le joueur le déplace dans la pièce, ainsi qu'un amortissement pour réduire sa réactivité. Nous faisons ainsi d'une pierre deux coups : nous atténuons la frustration du joueur et évitons de le pénaliser injustement à cause d'un comportement physique inhabituel.
Nous avons également découvert que nous devions disposer d'un moyen de réinitialiser l'énigme en cas d'échec du joueur. Étant donné que les joueurs risquent de faire tomber les cubes des plateformes pendant qu'ils jouent, nous avons placé davantage de cubes à des emplacements clés afin de réduire le nombre de retours en arrière nécessaires pour réinitialiser l'énigme et remplacer les cubes détruits.
Séquence de développement de la pièce 1
Pour copier les obstacles dans votre niveau, procédez comme suit :
Copiez l'extrait ci-dessous en cliquant sur Copier l'extrait complet.
Command LineExtrait de ligne de commandeBegin Map Begin Level Begin Actor Class=/Script/Engine.StaticMeshActor Name=StaticMeshActor_32 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32'" Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" End Object Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.StaticMeshActor_32.StaticMeshComponent0'" StaticMesh="/Script/Engine.StaticMesh'/Game/LevelPrototyping/Meshes/SM_Cube.SM_Cube'" StaticMeshImportVersion=1 StaticMeshDerivedDataKey="STATICMESH_FD1BFC73B5510AD60DFC65F62C1E933E_228332BAE0224DD294E232B87D83948FQuadricMeshReduction_V2$2e1_6D3AF6A2$2d5FD0$2d469B$2dB0D8$2dB6D9979EE5D2_CONSTRAINED0_100100000000000000000000000100000000000080FFFFFFFFFFFFFFFFFFFFFFFF000000000000803F00000000000000803F0000803F00000000000000003D19FC1626C9B248DECA64C7201D34D790CF7B09D3C0873700000000010000000100000000000000010000000100000000000000000000000100000001000000400000000000000001000000000000000000F03F000000000000F03F000000000000F03F0000803F00000000050000004E6F6E65000C00000030000000803FFFFFFFFF0000803FFFFFFFFF0000000000000041000000000000A0420303030000000000000000_RT00_0" RelativeLocation=(X=-5940.000136,Y=1669.999995,Z=-400.499900)Dans l'Unreal Editor, cliquez sur Modifier > Coller ou sur Ctrl + V dans le hublot.
Les plateformes
De la même manière que l'ajout de cubes physiques supplémentaire nous a permis de réinitialiser l'énigme, nous avons ajouté une plateforme qui ramène le joueur à la position de départ de la pièce. Cette plateforme de réinitialisation s'active à l'exécution grâce à la variable Active.
Pour copier les obstacles dans votre niveau, procédez comme suit :
Copiez l'extrait ci-dessous en cliquant sur Copier l'extrait complet.
Command LineExtrait de ligne de commandeBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C Name=BP_MovingPlatform_C_16 Archetype="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.Default__BP_Platform_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Platform" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Platforms/BP_Platform.BP_Platform_C:Platform_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.Platform'" End Object Begin Object Class=/Script/Engine.TimelineComponent Name="TM_MovePlatform" ExportPath="/Script/Engine.TimelineComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.TM_MovePlatform'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_MovingPlatform_C_16.DefaultSceneRoot'"Dans l'Unreal Editor, cliquez sur Modifier > Coller ou sur Ctrl + V dans le hublot.
Connectez les plateformes aux points cibles correspondants :
La
BP_Platform1référence le TargetPoint1La
BP_Platform2référence le TargetPoint2La
BP_Platform3référence le TargetPoint3La
BP_Platform4référence le TargetPoint4La
BP_Platform5référence le TargetPoint5
Les interrupteurs
Nous avons utilisé la matrice InteractObjectList pour connecter certains interrupteurs à plusieurs plateformes. Cela nous a permis d'obtenir un résultat concis et stimulant, en évitant des étapes supplémentaires susceptibles d'ennuyer ou de frustrer le joueur.
Pour copier les obstacles dans votre niveau, procédez comme suit :
Copiez l'extrait ci-dessous en cliquant sur Copier l'extrait complet.
Command LineExtrait de ligne de commandeBegin Map Begin Level Begin Actor Class=/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C Name=BP_ActivationPlate_C_9 Archetype="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.Default__BP_Switch_C'" ExportPath="/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9'" Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'" End Object Begin Object Class=/Script/Engine.StaticMeshComponent Name="Switch" Archetype="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Switch_GEN_VARIABLE'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Switch'" End Object Begin Object Class=/Script/Engine.BoxComponent Name="Trigger" Archetype="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Blueprints/Activation/BP_Switch.BP_Switch_C:Trigger_GEN_VARIABLE'" ExportPath="/Script/Engine.BoxComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.Trigger'" End Object Begin Object Name="DefaultSceneRoot" ExportPath="/Script/Engine.SceneComponent'/Game/AdventureGame/Designer/Lvl_Adventure.Lvl_Adventure:PersistentLevel.BP_ActivationPlate_C_9.DefaultSceneRoot'"Dans l'Unreal Editor, cliquez sur Modifier > Coller ou sur Ctrl + V dans le hublot.
Connectez chaque interrupteur à la plateforme correcte :
Le
BP_Switch1référence laBP_Platform1.Le
BP_Switch2référence laBP_Platform2et laBP_Platform 3.Le
BP_Switch3référence laBP_Platform5.
Testez maintenant votre niveau pour vous assurer qu'il fonctionne correctement et essayez de résoudre l'énigme. Vous pouvez comparer votre travail au niveau terminé que nous proposons à la fin de cette série de tutoriels.