SwitcherPawnComponent para cambios entre pawns
El SwitcherPawnComponent
es un componente personalizado creado para facilitar el cambio dinámico de posesión entre pawns en una escena. Este componente se integra con el sistema de PlayerController
para localizar y cambiar de manera eficiente el control a pawns específicos basados en sus identificadores únicos usando GameplayTags
.
Este componente resuelve el problema de manejar múltiples pawns en un nivel y la necesidad de cambiar de posesión entre ellos de forma dinámica, utilizando una lógica centralizada y extensible. Es particularmente útil cuando en el nivel hay varios cambios de vista con tipos de Pawns de comportamientos distintos, como por ejemplo, el cambio entre la vista orbital y la primera persona, donde se produce un cambio de cámara y también un cambio en el Pawn y su comportamiento.
Integración con PlayerControllers de IdealTwin
En IdealTwin, los PlayerControllers
creados para el proyecto ya tienen integrado de base el SwitcherPawnComponent
, facilitando su uso en cualquier nivel del juego. Además, al inicio de los niveles de exterior e interior emplean esta lógica de cambio de posesión desde el inicio, realizando automáticamente la primera posesión al pawn correspondiente.
Por lo tanto, se recomienda utilizar este componente también para establecer el orden de posesión si se desea modificar.

Funcionamiento
El SwitcherPawnComponent
utiliza los siguientes conceptos principales:
PlayerController: El componente está diseñado para residir en el
PlayerController
que es el que se encarga de hacer las transiciones.Interfaz: PawnSwitchInterface: Para identificar los pawns que pueden ser poseídos, el SwitcherPawnComponent utiliza una interfaz llamada PawnSwitchInterface. Todos los actores de clase
Pawn
que implementen esta interfaz serán considerados candidatos para el cambio de posesión. La interfaz incluye un método clave que devuelve elGameplayTag
asociado al pawn. Este tag se usa para determinar qué pawn debe ser poseído.GameplayTags: Cada pawn implementa un
GameplayTag
único, que actúa como identificador. Este tag es consultado por el componente para asegurarse de que la posesión cambie al pawn correcto.
Configuración para usar el SwitchComponent
El diseño del SwitcherPawnComponent permite una fácil personalización y extensión:
Añadir Pawns con Tags:
Solo se necesita implementar la interfaz PawnSwitchInterface en los pawns y asignarles un Gameplay Tag adecuado.Interfaz Flexible:
La interfaz puede ser extendida para incluir más información si el flujo de cambio de posesión necesita lógica adicional.Integración con Gameplay Tags:
Al aprovechar el sistema de Gameplay Tags, el componente se integra perfectamente con otros sistemas del motor, como habilidades, inventarios o comportamientos contextuales.
Agregar Nuevos Tags
Solo se permite un Pawn por tag. El sistema utiliza una lista interna donde guarda las referencias de los pawn unica por cada uno de los GameplayTag en el mismo nivel, en el caso de que hayan 2 se sobreescribira el ultimo registrado.
Al usar los GameplayTags, simplemente se deben agregar los tags necesarios desde el panel conforme se requieran.
En la variable del IdealTwinBaseCharacter agregar nueva subtag en cualquier sitio que se quiera. Al ser GameplayTags puedes organizar tus tags como necesites sin que esto repercuta en el fucionamiento.

Importante que al agregar el tag hay que especificarle el source que se va a usar para guardar el tag.

Al tener el nuevo tag ya asignado al SwitchPawnTag será usado como el tag del pawn actual

Como hacer los cambios de posesión
Desde el PlayerController se pueda hacer la posession usando el SwitcherComponent usando el tag que se quiera encontrar y usar y este lo hara directamente:

Desde fuera del PlayerController
se puede coger el componenete si existe y hacer el cambio. Aunque esto se pueda hacer se recomienda que la implementacién se haga directamtente en el que se va a usar.

Este es un ejemplo de como quedaría la implementación dentro del PC_ITw_Interior
para hacer los cambios de camara

Interfáz PawnSwitchInterface
Esta interfaz se emplea en los Pawns/Characters
que se desea integrar con el sistema de GamePlayTag
. Internamente, el componente rastreará todos los actores en el nivel que implementen esta interfaz para realizar la posesión si coinciden con el tag específico que se busca.
Las clases que hereden de IdealTwinWalkCharacter
, IdealTwinOrbitalCharacter
, IdealTwinBaseCharacter
ya implementa desde C++ el auto registro y los tags asignados.
Se recomienda crear siempre nuevos pawn que hereden de IdealTwinBaseCharacter
para que la implementación ya esté integrada.