Interaction System
Tipo: Exec (In → Out)
Categoría: PLAYER
Sistema de interacción con objetos de la escena mediante raycast. Detecta objetos interactuables al presionar (o mantener) una tecla, y opcionalmente les envía un mensaje BGE o modifica una propiedad.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| Range | Float | 2.5 |
Distancia máxima de interacción (unidades de Range) |
| Property Filter | String | "interactable" |
Propiedad BGE que marca objetos como interactuables |
| Type Property | String | "interaction_type" |
Propiedad BGE de la que se lee el tipo de interacción |
| Interact Key | Enum | E |
Tecla de interacción |
| Cooldown | Float | 0.3 |
Segundos mínimos entre interacciones consecutivas |
| Origin | Enum | Camera |
Origen del raycast (Camera para FPS, Object para IA/tercera persona) |
| Hold to Interact | Bool | False |
Requiere mantener la tecla durante Hold Duration segundos |
| Hold Duration | Float | 1.0 |
Segundos que hay que mantener la tecla |
| Auto Pickup | Bool | False |
Interactúa automáticamente con objetos de tipo Auto Type |
| Auto Type | String | "pickup" |
Tipo de interacción para auto-pickup |
| Send Message | Bool | True |
Llama a target.sendMessage() al interactuar |
| Message | String | "" |
Asunto del mensaje (vacío = usa el valor de interaction_type) |
| Set Property | Bool | False |
Asigna target['_int_triggered'] = 1 al interactuar |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Out | Salida | Exec |
Variables publicadas
| Variable | Tipo | Descripción |
|---|---|---|
interaction_available |
bool | True cuando hay un objeto interactuable en rango |
interaction_object |
KX_GameObject | Objeto detectado (o None) |
interaction_type |
string | Valor de la propiedad Type Property del objeto |
interaction_triggered |
bool | Pulso de un frame al completarse la interacción |
interaction_hold_progress |
float (0–1) | Progreso del hold (solo en modo Hold to Interact) |
Configuración de objetos interactuables
Añade a cada objeto de la escena que quieras que sea interactuable:
- Propiedad BGE
interactable(o la que configures en Property Filter) - Propiedad BGE
interaction_typecon el tipo:"pickup","door","lever", etc.
Uso típico
[OnUpdate] → [Interaction System] → [Out]
↓ interaction_available
[Branch] ──► True ──► [UI: Mostrar "Presiona E"]
El mensaje BGE enviado al objeto interactuable puede activar su propia lógica sin necesidad de referencias directas.