FOS Teleport
Versión 1.0.1 · requiere FOS Essentials Core 1.0.0 o posterior
Teletransporte de sentido único A → B, con tres disparadores. Requiere FOS Essentials Core 1.0.0.
Los tres componentes
Sección titulada «Los tres componentes»| Componente | Disparador | Necesario en el GameObject |
|---|---|---|
FOSTeleportInteract |
Interacción del jugador («Use») | Un Collider |
FOSTeleportTrigger |
Entrada en un volumen | Un Collider con Is Trigger activado |
FOSTeleportButton |
Clic en un Button de interfaz |
Un Button referenciado en el inspector |
Los tres derivan de FOSTeleporterBase, que contiene el destino, las opciones y el
propio desplazamiento. Añadir un cuarto disparador cuesta una clase de tres líneas.
Menú: Add Component > FOS Essentials > Teleport > ...
Puesta en marcha
Sección titulada «Puesta en marcha»- Coloca el componente en el objeto que dispara el teletransporte.
- Crea un GameObject vacío donde el jugador deba aterrizar, oriéntalo en la dirección deseada y arrástralo a Destination. Se usa su rotación, no solo su posición.
- Para la variante de botón: arrastra el
Buttona su campo y pulsa Wire this Button. ElOnClickse rellena automáticamente.
Opciones
Sección titulada «Opciones»| Opción | Efecto |
|---|---|
| Keep momentum | Conserva la velocidad del jugador. Desactivado por defecto: llegar a toda velocidad le hace resbalar o caer. |
| Align play space | Solo RV. Gira todo el espacio de juego hacia el destino, no solo al jugador. Úsalo cuando haya que mirar el destino con precisión. |
| Cooldown | Segundos antes de que el teletransportador pueda volver a dispararse. 0,5 s por defecto. |
| Teleport sound | AudioSource reproducido localmente. Opcional. |
| On teleport | Componentes avisados mediante el evento público OnFOSTeleported(). |
Lo que conviene saber
Sección titulada «Lo que conviene saber»El teletransporte es local, y es intencionado
Sección titulada «El teletransporte es local, y es intencionado»La API de VRChat se niega a mover a un jugador remoto — ClientSim lo dice explícitamente: «Teleporting remote players will do nothing». Cada cliente mueve por tanto a su propio jugador. Consecuencias:
- sin red, sin propiedad de objeto, sin ancho de banda;
- un jugador teletransportado lo está para todos, porque VRChat ya sincroniza su posición;
- teletransportar a otra persona es imposible con este componente. Sería otra herramienta, con sincronización.
La trampa del trigger
Sección titulada «La trampa del trigger»OnPlayerTriggerEnter se dispara en todos los clientes, para cada jugador que
entra en el volumen. Sin filtrar, un jugador remoto que atraviese el trigger
teletransportaría al jugador local, al otro extremo del mundo. FOSTeleportTrigger
comprueba player.isLocal antes que nada.
El rebote entre dos teletransportadores
Sección titulada «El rebote entre dos teletransportadores»Si el destino de A queda dentro del volumen de B y viceversa, el jugador va y viene sin fin. El cooldown limita los daños, pero la solución real es colocar el punto de llegada fuera del volumen del teletransportador de enfrente.
El orden de las operaciones
Sección titulada «El orden de las operaciones»El bloqueo del cooldown se activa antes del desplazamiento: teletransportarse hace que el jugador salga y entre en volúmenes, y esos eventos pueden volver en el mismo fotograma.
Ampliar el pack
Sección titulada «Ampliar el pack»Un disparador nuevo no es más que una clase que deriva de FOSTeleporterBase y llama a
TeleportLocalPlayer():
using UdonSharp;using UnityEngine;
namespace FOS.Teleport{ [UdonBehaviourSyncMode(BehaviourSyncMode.None)] public class FOSTeleportOnTimer : FOSTeleporterBase { private void Start() { SendCustomEventDelayedSeconds(nameof(TeleportLocalPlayer), 10f); } }}Recuerda: el nombre de la clase debe coincidir exactamente con el del archivo .cs,
y el program asset se crea solo la próxima vez que cargue el editor.
