🐍 Llamando Sensores y Actuadores desde Python en Range

🐍 Llamando Sensores y Actuadores desde Python en Range

En este tutorial aprenderás a acceder y utilizar sensores y actuadores directamente desde un script en Python dentro de Range.

La idea es simple: vamos a usar un cubo llamado “Player”, que se moverá utilizando las teclas W, A, S, D, pero a diferencia del tutorial anterior, esta vez utilizaremos mas sensores y actuadores y los mandaremos llamar completamente desde código.


🧱 Preparación en la escena

  1. Crea un cubo y renómbralo como:
    👉 Player
  2. Agrega los siguientes sensores tipo Keyboard:
    • ⌨️ W
    • ⌨️ A
    • ⌨️ S
    • ⌨️ D
  3. Agrega los siguientes actuadores tipo Motion:
    • ⚙️ W
    • ⚙️ A
    • ⚙️ S
    • ⚙️ D
  4. ⚠️ Muy importante:
    Asegúrate de que cada sensor y actuador tenga exactamente el mismo nombre.
  5. Agrega un controller Python y enlaza todos los sensores a este controller.

Para que no quede dudas en este paso de colocar Sensores, Controladores y Actuadores, aqui tienes este GIF para que veas el  proceso completo.


💻 Script en Python

A continuación tenemos el siguiente script en Python. A grandes rasgos, este script se encarga de enlazarse con el controller y obtener referencias a los sensores y actuadores por medio de sus nombres.

Es importante que respetes la nomenclatura utilizada, ya que los nombres de los sensores y actuadores deben coincidir exactamente con los definidos en el código. De lo contrario, el script no podrá encontrarlos y no funcionará correctamente.

import Range

# =========================================================
# OBTENER EL CONTROLLER Y EL OBJETO
# =========================================================

# Obtenemos el controller que está ejecutando este script
# Este controller es el puente entre Python y los Logic Bricks
cont = Range.logic.getCurrentController()

# Obtenemos el objeto dueño del controller (en este caso, el cubo "Player")
own = cont.owner


# =========================================================
# ACCESO A LOS SENSORES
# =========================================================

# Aquí estamos "llamando" cada sensor por su nombre
# Estos nombres deben coincidir exactamente con los que creaste en el objeto

w = cont.sensors["W"]  # Sensor de la tecla W
s = cont.sensors["S"]  # Sensor de la tecla S
a = cont.sensors["A"]  # Sensor de la tecla A
d = cont.sensors["D"]  # Sensor de la tecla D


# =========================================================
# ACCESO A LOS ACTUADORES
# =========================================================

# Igual que con los sensores, accedemos a los actuadores por nombre
# Cada uno controla un movimiento diferente del objeto

w_act = cont.actuators["W"]  # Actuador para avanzar
s_act = cont.actuators["S"]  # Actuador para retroceder
a_act = cont.actuators["A"]  # Actuador para moverse a la izquierda
d_act = cont.actuators["D"]  # Actuador para moverse a la derecha


# =========================================================
# LÓGICA DE MOVIMIENTO
# =========================================================

# Cada sensor tiene una propiedad llamada "positive"
# Esta propiedad es TRUE cuando la tecla está presionada

# -------- TECLA W --------
if w.positive:
    # Si la tecla W está presionada, activamos su actuador
    cont.activate(w_act)
else:
    # Si no está presionada, desactivamos el actuador
    cont.deactivate(w_act)

# -------- TECLA S --------
if s.positive:
    cont.activate(s_act)
else:
    cont.deactivate(s_act)

# -------- TECLA A --------
if a.positive:
    cont.activate(a_act)
else:
    cont.deactivate(a_act)

# -------- TECLA D --------
if d.positive:
    cont.activate(d_act)
else:
    cont.deactivate(d_act)


# =========================================================
# NOTA IMPORTANTE
# =========================================================

# Este script se ejecuta constantemente (cada frame del juego)
# Esto significa que en todo momento está revisando:
# - Si una tecla está presionada
# - Y activando o desactivando su actuador en consecuencia

Copia y pega este Script dentro del editor de texto de Range y nombralo “mover.py“. Aquí te dejo un video del proceso de pegar el script en el editor de texto de Range.

Ahora que ya tienes el script listo en el editor de texto, es momento de asignarlo al controller.

Para hacerlo, cambia el tipo de controller de And a Python. Después, haz clic en el campo de texto del script; esto desplegará la lista de archivos disponibles desde el editor de texto de Range.

Ahí deberías ver tu archivo mover.py. Selecciónalo y con eso tu script quedará correctamente vinculado al controller.

 


🧠 ¿Qué está pasando aquí?

  • Obtenemos el controller activo
  • Desde ahí accedemos a:
    • 🎯 Sensores → detectan entrada del usuario
    • ⚙️ Actuadores → ejecutan acciones
  • Usamos .positive para saber si una tecla está presionada
  • Activamos o desactivamos actuadores en tiempo real

🎮 Resultado

Al ejecutar la escena:

  • 🟦 El cubo Player se moverá usando W, A, S, D
  • 🐍 Todo el control pasa por Python
  • 🔧 Estás combinando lógica visual con scripting

En este punto, es posible que con los valores actuales de los actuadores el movimiento del cubo se sienta muy lento, tanto al avanzar y retroceder como al rotar.

Esto es completamente normal y puedes ajustarlo fácilmente modificando los valores directamente en los actuadores.

Por ejemplo:

  • Para W y S puedes usar valores como 0.1 y -0.1 para controlar el avance y retroceso.

  • Para A y D puedes usar valores como 1.5 y -1.5 para lograr una rotación más notoria.

Te recomiendo experimentar con estos valores hasta encontrar un comportamiento que se sienta cómodo y adecuado para tu proyecto.

 


🚀 Nota final

Si no entiendes todo el script al inicio, no te preocupes.

Es completamente normal comenzar trabajando con código que no escribiste tú mismo. Lo importante aquí es empezar a reconocer patrones: cómo se llaman sensores, cómo se activan actuadores, y cómo se estructura la lógica.

Con la práctica, estos comandos se irán quedando en tu memoria y cada vez te resultará más natural programar dentro de Range. Y como siempre aqui abajo te dejo el archivo, por si necesitas revisarlo y probarlo.

One response to “🐍 Llamando Sensores y Actuadores desde Python en Range”

  1. […] En el siguiente tutorial con python usaremos código para mandar llamar actuadores y sensores para activarlos o desactivarlos en tiempo real. […]

Leave a Reply to 🐍🎮 Tutorial básico en Range: Movimiento con WSAD usando Python – SM Cancel reply

Your email address will not be published. Required fields are marked *