Los botones se pueden usar por los jugadores para desbloquear nuevas áreas, otorgar puntos y revelar tesoros. Cada vez que un jugador toque un botón, debería dar algunos comentarios para que los jugadores sepan que está interactuando con él, como cambiar colores o hacer sonidos.
En este ejemplo, el botón se usará para activar un puente. Cuando el botón se haya presionado, 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
Empieza por construir el puente.
Crea un área en tu juego donde los jugadores necesiten un puente.
Crea una parte para el puente y gánale un nombre nuevo.
Selecciona el puente en la ventana de Propiedades:
- Cambia Transparencia a .5. Para Transparencia, 0 es visible, 1 es invisible.
- Compruebe Ancla .
- Deselecciona CanCollide .
Prueba el juego, el puente debería estar brumoso y la gente no debería poder caminar sobre él aún.
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 Touched no se desencadenaraccidentalmente.
Haciendo el Botón Interactivo
Esta vez, en lugar de usar el evento Touched para crear una trampa, lo usarás para crear un botón que haga que el puente sea utilizable. Para hacer que el puente sea colidible, usa el código bridge.CanCollide = true dentro de una función personalizada que se ejecuta cuando un jugador toca el botón. Sabes todo lo que necesitas para completar los siguientes pasos.
Intenta averiguarlo por ti mismo antes de mirar la solución del código.
- Inserta un nuevo script en el botón llamado ActivateBridge.
- Borrar Hello World .
- Crea variables para el puente y para el botón.
- Crea una función local que haga lo siguiente:
- Imprime "button touched" .
- Cambia el color del botón de rojo a verde cuando se toca.
- Cambia la transparencia del puente a 0 para que sea visible.
- Hace que el puente sea utilizable usando el código bridge.CanCollide = true
- Conecta la función al evento Touched del botón.
- Pruebe el guión y asegúrese 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
-- Convierte el botón en verde cuando algo toca el botón.
local button = script.Parent
local bridge = workspace.Bridge
local function buttonPressed()
print("button touched")
button.Color = Color3.fromRGB(0, 170, 0)
bridge.Transparency = 0
bridge.CanCollide = true
end
button.Touched:Connect(buttonPressed)
Solucionando problemas con tu código
Problema: El puente ya está sólido cuando comienza el juego. Asegúrate de que las partes estén ancladas y no toquen nada. Las partes pueden tocar algo, como el terreno u otra parte, y hacer que la función de botón presionado () dispare accidentalmente. Problema: Recibe un error en la ventana de salida que dice: "El puente no es un miembro válido del espacio de trabajo" Compruebe lo siguiendo:
- El nombre de tu puente. El puente en tu script debe tener el mismo nombre que en el Explorador.
- Que part.Touched:Connect(buttonPressed) está fuera de la buttonPressed() función.
Desafío de código opcional
El script de 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 siguiendo:
- Crea una parte de la puerta.
- Crea un botón más lejos de la puerta.
- Cambia el guión en esta lección para que haga que la puerta cambie de transparencia y el jugador no pueda colisionar con ella.
Su versión podría verse así:
local button = script.Parent
-- Recordatorio: Reemplace el nombre de la parte, Puerta, con el de su proyecto
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Cambia el botón a rojo para dar opiniónal jugador
button.BrickColor = BrickColor.Red() -- CAMBIAR ESTO
-- Hacer la puerta invisible
gate.Transparency = 1
-- Hace que el jugador pueda caminar a través de la puerta
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)