Os botões podem ser usados pelos jogadores para desbloquear novas áreas, dar pontos e revelar tesouros. Sempre que um jogador toca um botão, ele deve dar algum feedback para deixar os jogadores saberem que estão interagindo, como mudar cores ou fazer sons.
Neste exemplo, o botão será usado para ativar uma ponte. Quando o botão for pressionado, ele ficará verde e os jogadores poderão usar a ponte. Se o jogador não tiver pressionado o botão, ele cairá pela ponte quando tentar pisar nela.
Faça uma ponte
Comece montando a ponte.
Crie uma área em seu jogo onde os jogadores precisarão de uma ponte.
Crie uma parte para a ponte e renomeie-a de Ponte.
Selecione a ponte na janela de Propriedades:
- Altere Transparência para .5. Para Transparência, 0 é visível, 1 é invisível.
- Verifique Âncora .
- Desmarque CanCollide .
Teste o jogo, a ponte deve estar brumosa e as pessoas não devem poder andar nela ainda.
Criar o Botão
Agora que a ponte está configurada, crie o botão.
- Crie uma nova parte chamada Botão.
- Mude a cor do botão para vermelho.
- Ancore o botão.
- Mova o botão para que ele flutue ligeiramente e não toque em nada. Isso é para ter certeza de que o evento Touched não Iniciar / executaracidentalmente.
Tornando o Botão Interativo
Desta vez, em vez de usar o evento Touched para criar uma armadilha, você vai usá-lo para criar um botão que torna a ponte utilizável. Para tornar a ponte utilizável, use o código bridge.CanCollide = true dentro de uma função personalizada que funciona quando um jogador toca no botão. Você sabe tudo o que precisa para completar os seguintes passos.
Tente descobrir por si mesmo antes de olhar para a solução do código.
- Insira um novo script no botão chamado ActivateBridge.
- Excluir Hello World .
- Crie variáveis para a ponte e para o botão.
- Crie uma função local que toque no seguinte botão:
- Imprime "button touched" .
- Muda a cor do botão de vermelho para verde quando tocada.
- Muda a transparência da ponte para 0 para torná-la visível.
- Torna a ponte utilizável usando o código bridge.CanCollide = true
- Conecte a função ao evento Touched do botão.
- Teste o script e certifique-se de que a ponte apareça quando o botão for tocado.
Código Solução Abaixo está uma possível solução de código
-- Insira este script no botão
-- Torna o botão verde quando algo toca no botão.
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)
Resolvendo Problemas com o Seu Código
Problema: A ponte já está sólida quando o jogo começa. Certifique-se de que as peças estejam ancoradas e não toquem em nada. As peças podem tocar em algo, como terreno ou outra parte, e causar o botão Pressionado () a disparar acidentalmente. Problema: Você recebe um erro na janela de saída dizendo: "A ponte não é um membro válido do Workspace" Verifique o seguindo:
- O nome da sua ponte. A ponte no seu script deve ser nomeada exatamente como no Explorador.
- Que part.Touched:Connect(buttonPressed) está fora da função buttonPressed().
Desafio de Código Opcional
O script nesta lição também pode ser usado para manter as portas que mantêm os jogadores fora de áreas específicas. Pratique suas habilidades de codificação e faça o seguindo:
- Crie uma parte da porta.
- Crie um botão mais longe da porta.
- Altere o script nesta lição para que ele torne a porta transparente para que o jogador não possa colidir com ela.
Sua versão pode parecer algo assim:
local button = script.Parent
-- Lembrete: Substitua o nome da peça, Gate, pelo do seu projeto
local gate = workspace.Gate
local function buttonPressed()
print("button touched")
-- Muda o botão para vermelho para dar comentário/retornoao jogador
button.BrickColor = BrickColor.Red() -- MUDAR ISSO
-- Tornar o portão invisível
gate.Transparency = 1
-- Faz com que o jogador possa atravessar o portão
gate.CanCollide = false
end
button.Touched:Connect(buttonPressed)