Los botones pueden ser utilizados por los jugadores para desbloquear nuevas áreas, dar puntos y revelar tesoros. Siempre que un jugador toque un botón, debería dar alguna retroalimentación para que los jugadores sepan que se está interactuando con él, como cambiar de color o hacer sonidos.
En este ejemplo, el botón se utilizará para activar un puente. Cuando se presione el botón, se volverá verde y los jugadores podrán usar el puente. Si el jugador no ha presionado el botón, caerá a través del puente cuando intente caminar sobre él.
Hacer un puente
Comienza configurando el puente.
Crea un área en tu entorno donde los jugadores necesitarán un puente.
Crea una parte para el puente y renómbrala a Puente.
Selecciona el puente, en la ventana de Propiedades:
- Cambia Transparencia a .5. Para la Transparencia, 0 es visible, 1 es invisible.
- Marca Anclado.
- Desmarca Puede Colisionar.
Cuando pruebes el juego, el puente debería verse brumoso y las personas no deberían poder caminar sobre él todavía.

Crear el botón
Ahora que el puente está configurado, crea el botón.
Crea una nueva parte llamada Botón.
Cambia el color del botón a rojo.
Ancla el botón.
Mueve el botón para que esté ligeramente flotando y no toque nada. Esto es para asegurarte de que el evento Tocado no se dispare accidentalmente.

Hacer el botón interactivo
Esta vez, en lugar de usar el evento Tocado para crear una trampa, lo usarás para crear un botón que haga que el puente sea utilizable. Para hacer que el puente pueda colisionar, usa el código bridge.CanCollide = true dentro de una función personalizada que se ejecute cuando un jugador toque el botón. Sabes todo lo que necesitas para completar los siguientes pasos.
Intenta resolverlo tú mismo antes de mirar la solución de código.
- Inserta un nuevo script en el botón llamado ActivarPuente.
- Elimina Hola Mundo.
- Crea variables para el puente y para el botón.
- Crea una función local que haga lo siguiente cuando se toque el botón:
- Imprime "botón tocado".
- Cambia el color del botón de rojo a verde cuando se toque.
- Cambia la transparencia del puente a 0 para hacerlo visible.
- Hace que el puente sea utilizable usando el código bridge.CanCollide = true.
- Conecta la función al evento Tocado del botón.
- Prueba el script y asegúrate de que el puente aparezca cuando se toque el botón.
Solución de Código A continuación se muestra una posible solución de código
-- Inserta este script en el botón
-- Cambia el botón a verde cuando algo toca el botón.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("botón tocado")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)Solucionar problemas de tu código
Problema: El puente ya es sólido cuando comienza el juego. Asegúrate de que las partes estén ancladas y no toquen nada. Las partes podrían tocar algo, como terreno u otra parte, y causar que la función buttonPressed() se dispare accidentalmente.
Problema: Obtienes un error en la ventana de Salida que dice: "El puente no es un miembro válido de Workspace" Verifica lo siguiente:
- El nombre de tu puente. El puente en tu script debe estar nombrado exactamente como en el Explorador.
- Que part.Touched:Connect(buttonPressed) esté fuera de la función buttonPressed().
Desafío de código opcional
El script en esta lección también se puede usar para mantener puertas que mantengan a los jugadores fuera de áreas específicas. Practica tus habilidades de codificación y haz lo siguiente:
- Crea una parte de puerta.
- Crea un botón más lejos de la puerta.
- Cambia el script en esta lección para que haga que la puerta cambie de transparencia y para que el jugador no pueda colisionar con ella.
Tu versión podría verse algo así:
local button = script.Parent
-- Recordatorio: Reemplaza el nombre de la parte, Puerta, con el de tu proyecto
local gate = workspace.Gate
local function buttonPressed()
print("botón tocado")
-- Cambia el botón a rojo para dar retroalimentación al jugador
button.BrickColor = BrickColor.Red() -- CAMBIA ESTO
-- Hace que la puerta sea invisible
gate.Transparency = 1
-- Hace que el jugador pueda caminar a través de la puerta
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)