OBJETS FLOTTANTS

Pour Equilibrium, nous voulions avoir des objets flottants qui bougent tranquillement dans l'espace.

J'ai créé cet effet avec un Blueprint ActorComponent que nos level artists pouvaient ajouter facilement à n'importe quel objet dans la scène, avec des variables pour la vitesse et l'amplitude du déplacement et de la rotation.

Puisque les ActorComponent n'ont pas de ConstructionScript, je commence par appliquer les settings initiaux dans le BeginPlay.

Je commence par rendre l'object sur lequel le ActorComponent est appliqué Movable.

Le mouvement du Actor se faire dans le Tick, donc pour aider sur la performance je désactive le Tick et je spawn un Manager (un autre Blueprint que j'ai créé) qui va activer le Tick uniquement quand le joueur est assez près du Actor.

Pour terminer, je vérifie quel type de mouvement a été choisi par nos levels artists (déplacement ou rotation) et je vais chercher la Position et la Rotation initiale du Actor.

Cliquez sur l'image pour une vue détaillée.

Le manager contient un Sphere qui active l'animation lorsque le joueur l'Overlap et la désactive lorsqu'il en sort.

Pour ce faire, le Manager actionne des Events dans le ActorComponent qui activent et désactivent le Tick.

Vient finalement l'animation en tant que tel. Pour m'assurer que le blueprint n'est pas trop demandant sur le processeur (puisqu'il y a de nombreux objets en mouvement en même temps), j'ai créé le blueprint de manière à ce qu'il calcule uniquement ce qu'il a besoin de calculer en fonction des valeurs choisies par nos level artists.

La progression de la position et de la rotation sont calculés à l'aide de Sine Waves

Cliquez sur l'image pour une vue détaillée.

Avoir eu plus de temps, j'aurais aimé tester un blueprint qui créerait un Material Instance pour chaque objet flottant avec l'animation intégrée directement dans le matériel pour être moins demandant sur le processeur et comparer l'impact des deux méthodes sur le temps de chargement du jeu et sur la performance du jeu.

© 2019 par Julien Grimard

  • itch.io
  • LinkedIn