Dans ce tutoriel, vous allez apprendre à créer un angle de caméra statique (ou fixe) qui sera utilisé dans un niveau d'exemple de jeu en vue à la troisième personne. Vous verrez ensuite comment créer un volume pour déclencher la transition de votre point de vue vers cette nouvelle caméra statique quand le joueur entrera dans le volume. Une fois ce tutoriel terminé, vous serez capable de reproduire le processus dans votre propre jeu afin de configurer une perspective fixe pour un joueur.
Créer l'acteur de caméra statique
Begin by creating a New > Games > Third Person > C++ project named StaticCameras.
Launch the C++ Class Wizard, enable the checkbox for Show All Classes, then type CameraActor within the search field to select and create your new Camera Actor class named ExampleCameraActor.
From the C++ Class panel, right click on your ExampleCamera and from the dropdown C++ Class actions menu select Create a Blueprint class based on ExampleCameraActor. Then drag an instance of BP_ExampleCameraActor into the level.
Configuration du niveau
Pour tester la transition entre la caméra du joueur et l'acteur de caméra statique, la scène doit d'abord être préparée. Pour cela, nous allons modifier une partie de la géométrie des maillages statiques issus du modèle de niveau pour un jeu à la troisième personne.
Accédez au panneau Organiseur du monde et, à l'aide de la touche Maj, sélectionnez les acteurs Sol et Mur (au nombre de 4) de maillage statique dans le dossier ArenaGeometry > Arena.
Dans l'exemple ci-dessus, les quatre acteurs de maillage statique Mur sont nommés Wall6, Wall7, Wall8 et Wall9.
Pour créer une configuration de sol et de mur en double, cliquez sur le gadget de transformation en maintenant la touche Alt enfoncée et faites-le glisser.
Un deuxième acteur de maillage statique de sol et quatre autres acteurs de maillage statique de mur seront alors créés.
Dans l'exemple ci-dessus, le sol dupliqué est nommé Floor2 et les murs dupliqués sont nommés Wall10, Wall11, Wall12 et Wall13.
Déplacez les nouveaux maillages statiques pour les disposer comme indiqué ci-dessous. Vous aurez ainsi une nouvelle pièce identique à la première, mais sans aucun contenu.
Dans l'organiseur du monde, sélectionnez les deux murs qui relient les deux salles et réglez les valeurs d'échelle X sur 14.
Dans l'exemple ci-dessus, ces deux murs sont nommés Wall9 et Wall12.
Sélectionnez les deux murs à relier, puis déplacez-les à l'aide du gadget de transformation pour former un espace de séparation entre les salles, comme illustré dans le GIF ci-dessous.
Dans l'exemple ci-dessus, ces deux murs sont nommés Wall9 et Wall10.
Votre niveau terminé devrait ressembler à l'image ci-dessous, avec une seconde pièce reliée à la première par une ouverture dans le mur.
Configuration du point de vue de la caméra
Une fois la configuration du niveau terminée, vous pouvez y placer BP_ExampleCameraActor pour vous faire une meilleure idée de la vue qu'aura le joueur lorsqu'il chevauchera le volume de déclenchement. Si vous souhaitez afficher une perspective à la première personne du point de vue de la caméra, verrouillez le hublot sur l'acteur de caméra et activez le mode Pilote.
Sélectionnez la caméra dans le niveau, faites un clic droit dessus et, dans le menu contextuel qui s'affiche, cliquez sur Pilot CameraActor.
Vous pouvez à présent vous déplacer dans le hublot à l'aide des touches WASD (QWERTY) tout en maintenant le bouton gauche ou droit de la souris enfoncé. Quand vous vous déplacez dans le niveau, la caméra change de position pour suivre le mouvement, ce qui vous donne une idée de la vue de la caméra en jeu.
Pour déverrouiller la caméra, cliquez sur le bouton Déverrouiller.
La caméra restera désormais à la position qu'elle occupait quand vous l'avez déverrouillée. L'icône située près du bouton Unlock vous permet de passer de la vue de la caméra dans le jeu à la vue de l'éditeur de niveau.
Pilotez la caméra de façon à la placer en hauteur et orientée vers la seconde pièce, comme indiqué dans le GIF ci-dessous.
Votre configuration terminée devrait ressembler à l'image ci-dessous, avec une caméra statique orientée vers la deuxième salle et la caméra d'origine qui suit l'acteur à la troisième personne.
Créer l'acteur de déclenchement au chevauchement
Dans cet exemple, l'acteur de déclenchement sert de gestionnaire de transition entre le point de vue de la caméra du joueur et le point de vue de la caméra statique. Une fois que le joueur chevauche les limites du volume de son composant de boîte, un fondu de transition se produit entre les perspectives.
Using the C++ Class Wizard, create a new Actor class named BlendTriggerVolume.
Navigate to your
BlendTriggerVolume.hfile, and declare the following code in your class definition.C++protected: //Collision Bounds of the Actor Volume UPROPERTY(EditAnywhere, BlueprintReadWrite) class UBoxComponent* OverlapVolume; //Camera Actor which the Actor Volume blends to UPROPERTY(EditAnywhere, BlueprintReadWrite) TSubclassOf<ACameraActor> CameraToFind;Next, navigate to your
BlendTriggerVolume.cppfile to set up your constructor and box component overlap methods. Declare the following include class libraries.C++`#include "Components/BoxComponent.h"` `#include "StaticCamerasCharacter.h"` `#include "Camera/CameraActor.h"` `#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"`In the constructor ABlendTriggerVolume::ABlendTriggerVolume, declare the following code.
C++ABlendTriggerVolume::ABlendTriggerVolume() { //Create box component default components OverlapVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("CameraProximityVolume")); //Set the box component attachment to the root component. OverlapVolume->SetupAttachment(RootComponent); }Next, implement your
NotifyActorBeginOverlapandNotifyActorEndOverlapclass methods:C++void ABlendTriggerVolume::NotifyActorBeginOverlap(AActor* OtherActor){ //Cast check to see if overlapped Actor is Third Person Player Character if (AStaticCamerasCharacter* PlayerCharacterCheck = Cast<AStaticCamerasCharacter>(OtherActor)) { //Cast to Player Character's PlayerController if (APlayerController* PlayerCharacterController = Cast<APlayerController>(PlayerCharacterCheck->GetController())) {Compile your code.
Finished Code
BlendTriggerVolume.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "BlendTriggerVolume.generated.h"
UCLASS()
class STATICCAMERAS_API ABlendTriggerVolume : public AActor
{
GENERATED_BODY()
BlendTriggerVolume.cpp
#include "BlendTriggerVolume.h"
#include "Components/BoxComponent.h"
#include "StaticCamerasCharacter.h"
#include "Camera/CameraActor.h"
#include "Runtime/Engine/Classes/Kismet/GameplayStatics.h"
// Sets default values
ABlendTriggerVolume::ABlendTriggerVolume()
{
Setting up the Overlap Trigger Actor
Now that you have created your overlap Actor, you will need to place it into the level and set up its bounds.
Begin by navigating to your C++ Classes folder, right-click on your BlendTriggerVolume class, select Create Blueprint Class based on BlendTriggerVolume, then name your Blueprint Actor BP_BlendTriggerVolume.
From the class defaults, navigate to Camera To Find in the Details panel, open the drop down menu, then select BP_ExampleCameraActor.
Optionally, you can change the default blend time for this Blueprint without having to go back into the source code, or affecting other Blueprints with the same inherited parent class.
Compile and Save.
From the Content Browser, drag an instance of BP_BlendTriggerVolume into the level.
Move the BP_BlendTriggerVolume into the room with your BP_ExampleCameraActor, and from the Details panel select the box component. Navigate to the Shape category and modify the Box Extent X, Y, and Z values so the volume will fit your room.
From the Main Editor View, click the Play button to play in the Editor.
Résultat final
Lorsque le jeu démarre, le joueur peut contrôler les mouvements de son personnage en utilisant les touches WASD (QWERTY). Lorsqu'il pénètre dans le BP_BlendTriggerVolume, la vue de la caméra est assignée à l'acteur de caméra que vous avez créé et placé dans le niveau, et passera à une vue du dessus du personnage contrôlé par le joueur.
Vous aurez peut-être remarqué que la vue est en écran large ; pour la modifier, décochez l'option Proportions restreintes dans le panneau Détails de l'acteur de caméra.