Los botones pueden ser usados por los jugadores para desbloquear nuevas áreas, dar puntos y revelar tesoros.Cada vez que un jugador toca un botón, debe dar algún tipo de retroalimentación para que los jugadores sepan que está siendo interactuado, como cambiar colores o hacer sonidos.
En este ejemplo, el botón se usará para activar un puente.Cuando se haya presionado el botón, se volverá verde y los jugadores podrán usar el puente.Si el jugador no ha presionado el botón, caerá por el puente cuando intente caminar sobre él.
Hacer un puente
Comience por configurar el puente.
Crea una zona en tu juego donde los jugadores necesitarán un puente.
Crea una parte para el puente y renombrala Puente.
Seleccione el puente, en la ventana de propiedades:
- Cambiar Transparencia a .5. Para la transparencia, 0 es visible, 1 es invisible.
- Compruebe Ancla .
- Desmarcar Puede colisionar .
Prueba 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.
- Mueva el botón para que flote ligeramente y no toque nada. Esto es para asegurarse de que el evento Touched no desencadenaraccidentalmente.
Hacer que el botón sea 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 colisionable, use 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 demás que necesitas para completar los siguientes pasos.
Intenta averiguarlo por ti mismo antes de mirar la solución de código.
- Inserta un nuevo script en el botón llamado Activar puente.
- Eliminar Hello World .
- 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 "button touched" .
- Cambia el color del botón de cambio de color de rojo a verde cuando se toca.
- 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 Touched 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 es una solución de código posible
-- Inserta este script en el botón
-- Hace que el botón sea verde cuando algo toque 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)
Solucionar problemas con tu código
Problema: El puente ya está sólido cuando comienza el juego.: Asegúrese de que las piezas estén ancladas y no toquen nada.Las piezas pueden tocar algo, como terreno o otra parte, y causar que la función buttonPressed() se active accidentalmente. Problema: obtienes un error en la ventana de salida que dice: "El puente no es un miembro válido del espacio de trabajo" Comprueba lo siguiendo:
- La nomenclatura de tu puente. El puente en tu script debe llamarse exactamente como en el Explorador.
- Ese 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 siguiendo:
- Crea una parte de la puerta.
- Crea un botón más lejos de la puerta.
- Cambia el script en esta lección para que la puerta cambie la transparencia y el jugador no pueda chocar con ella.
Su versión podría verse algo así:
local button = script.Parent
-- Recordatorio: Reemplazar el nombre de la parte, Puerta, con el de tu proyecto
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Cambiar el botón a rojo para darle al jugador opinión
button.BrickColor = BrickColor.Red() -- CAMBIE ESTO
-- Hacer el portón invisible
gate.Transparency = 1
-- Hace que el jugador pueda caminar por la puerta
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)