Saltar a contenido

Player Movement

Tipo: Exec (In → Out)
Categoría: PLAYER

Aplica movimiento al objeto del jugador leyendo los ejes _pi_move_x / _pi_move_y publicados por Player Input. Soporta velocidad de sprint, suavizado de aceleración y control reducido en el aire.

Propiedades

Propiedad Tipo Por defecto Descripción
Physics Enum Character Modo de física: Character (applyMovement) o Dynamic (linearVelocity)
Speed Float 4.0 Velocidad de caminar (unidades/s)
Sprint Speed Float 8.0 Velocidad al hacer sprint (unidades/s)
Accel Lerp Float (0.01–1.0) 1.0 Suavizado de aceleración: 1 = instantáneo, menor = más suave
Air Control Float (0.0–1.0) 0.3 Multiplicador de velocidad mientras está en el aire

Sockets

Socket Dirección Tipo Descripción
In Entrada Exec
Speed Entrada Data Anula la propiedad Speed si está conectado
Sprint Speed Entrada Data Anula la propiedad Sprint Speed si está conectado
Out Salida Exec

Modos de física

Character

Usa applyMovement() en espacio local con corrección de delta time:

self.own.applyMovement((vx * dt, vy * dt, 0.0), True)

Ideal para objetos con física de tipo Character en Range.

Dynamic

Asigna directamente localLinearVelocity.x/y, preservando la velocidad Z (gravedad):

vel = self.own.localLinearVelocity.copy()
vel.x = vx
vel.y = vy
self.own.localLinearVelocity = vel

Ideal para objetos con física Dynamic.

Cómo funciona el sprint

El nodo lee _pi_sprint (bool) publicado por Player Input. Si es True, usa Sprint Speed en lugar de Speed. El socket Sprint Speed permite anular el valor desde el grafo.

Cómo funciona Accel Lerp

Se mantiene una velocidad interna (_pm_vx, _pm_vy) que hace lerp hacia la velocidad objetivo cada frame:

velocidad_actual = velocidad_actual + (objetivo - velocidad_actual) * accel_lerp

Con Accel Lerp = 1.0 el movimiento es idéntico al original (instantáneo). Con valores menores el personaje acelera y desacelera gradualmente.

Cómo funciona Air Control

Lee _pj_in_air de Player Jump (si está presente). Mientras el jugador esté en el aire, la velocidad objetivo se multiplica por Air Control antes del lerp, reduciendo la capacidad de maniobra aérea.

Air Control Efecto
1.0 Control completo en el aire (sin restricción)
0.3 30% del control normal en el aire (valor recomendado)
0.0 Sin control en el aire

!!! warning "Requiere Player Input en el mismo objeto" Si Player Input no está presente, _pi_move_x/y y _pi_sprint no existen y el objeto no se moverá.

!!! info "Air Control requiere Player Jump" Si Player Jump no está en el grafo, _pj_in_air tendrá valor False por defecto, equivalente a Air Control = 1.0 siempre.

Grafo de ejemplo

[OnUpdate] → [Player Input] → [Player Jump] → [Player Movement] → [Out]