FOS Teleport
Version 1.0.1 · exige FOS Essentials Core 1.0.0 ou plus récent
Téléportation à sens unique A → B, avec trois déclencheurs. Exige FOS Essentials Core 1.0.0.
Les trois composants
Section intitulée « Les trois composants »| Composant | Déclencheur | Requis sur le GameObject |
|---|---|---|
FOSTeleportInteract |
Interaction du joueur (« Use ») | Un Collider |
FOSTeleportTrigger |
Entrée dans un volume | Un Collider avec Is Trigger activé |
FOSTeleportButton |
Clic sur un Button d’interface |
Un Button référencé dans l’inspecteur |
Les trois dérivent de FOSTeleporterBase, qui porte la destination, les options et le
déplacement lui-même. Ajouter un quatrième déclencheur demande une classe de trois lignes.
Menu : Add Component > FOS Essentials > Teleport > ...
Mise en place
Section intitulée « Mise en place »- Posez le composant sur l’objet qui déclenche la téléportation.
- Créez un GameObject vide à l’endroit où le joueur doit arriver, orientez-le dans la direction voulue, puis glissez-le dans Destination. C’est sa rotation qui est utilisée, pas seulement sa position.
- Pour la variante bouton : glissez le
Buttondans son champ, puis cliquez sur Wire this Button. LeOnClickest rempli automatiquement.
| Option | Effet |
|---|---|
| Keep momentum | Conserve la vitesse du joueur. Désactivé par défaut : arriver à pleine vitesse le fait glisser ou tomber. |
| Align play space | VR uniquement. Oriente tout l’espace de jeu vers la destination, pas seulement le joueur. À utiliser quand la destination doit être regardée précisément. |
| Cooldown | Secondes avant que le téléporteur puisse se redéclencher. 0,5 s par défaut. |
| Teleport sound | AudioSource joué localement. Facultatif. |
| On teleport | Composants prévenus par l’événement public OnFOSTeleported(). |
Ce qu’il faut savoir
Section intitulée « Ce qu’il faut savoir »La téléportation est locale, et c’est voulu
Section intitulée « La téléportation est locale, et c’est voulu »L’API VRChat refuse de déplacer un joueur distant — ClientSim le dit explicitement : « Teleporting remote players will do nothing ». Chaque client déplace donc son propre joueur. Conséquences :
- pas de réseau, pas d’ownership, pas de bande passante ;
- un joueur téléporté l’est pour tout le monde, puisque VRChat synchronise déjà sa position ;
- téléporter quelqu’un d’autre est impossible avec ce composant. Ce serait un autre outil, avec de la synchronisation.
Le piège du trigger
Section intitulée « Le piège du trigger »OnPlayerTriggerEnter se déclenche sur tous les clients, pour chaque joueur
entrant dans le volume. Sans filtrage, un joueur distant traversant le trigger
téléporterait le joueur local, à l’autre bout du monde. FOSTeleportTrigger vérifie
player.isLocal avant toute chose.
Le rebond entre deux téléporteurs
Section intitulée « Le rebond entre deux téléporteurs »Si la destination de A se trouve dans le volume de B et réciproquement, le joueur fait l’aller-retour sans fin. Le cooldown limite les dégâts, mais la vraie correction est de placer le point d’arrivée hors du volume du téléporteur d’en face.
L’ordre des opérations
Section intitulée « L’ordre des opérations »Le verrou du cooldown est posé avant le déplacement : se téléporter fait sortir et entrer le joueur dans des volumes, et ces événements peuvent revenir dans la même image.
Étendre le pack
Section intitulée « Étendre le pack »Un nouveau déclencheur n’est qu’une classe dérivant de FOSTeleporterBase qui appelle
TeleportLocalPlayer() :
using UdonSharp;using UnityEngine;
namespace FOS.Teleport{ [UdonBehaviourSyncMode(BehaviourSyncMode.None)] public class FOSTeleportOnTimer : FOSTeleporterBase { private void Start() { SendCustomEventDelayedSeconds(nameof(TeleportLocalPlayer), 10f); } }}Rappel : le nom de la classe doit correspondre exactement au nom du fichier .cs, et
le program asset est créé tout seul au prochain chargement de l’éditeur.
