Parâmetros Prática - Botões

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

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.

  1. Crie uma área em seu jogo onde os jogadores precisarão de uma ponte.

  2. Crie uma parte para a ponte e renomeie-a de Ponte.

  3. 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 .
  4. 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.

  1. Crie uma nova parte chamada Botão.
  2. Mude a cor do botão para vermelho.
  3. Ancore o botão.
  4. 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.

  1. Insira um novo script no botão chamado ActivateBridge.
  2. Excluir Hello World .
  3. Crie variáveis para a ponte e para o botão.
  4. 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
  5. Conecte a função ao evento Touched do botão.
  6. 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)