Normalmente, funções só podem usar as informações que estão codificadas dentro delas. No entanto, às vezes, você pode não saber de antemão qual será essa informação, ou deseja poder reutilizar a mesma função com várias peças de informações semelhantes. Por exemplo, se você quisesse usar uma função para exibir o nome da pessoa que terminou um curso de obby mais rápido em letras gigantes para todos. Você não saberá o nome do futuro vencedor até que a corrida termine.
Parâmetros são espaços reservados para informações que você deseja fornecer à função em um momento posterior. Eles são como janelas que permitem que você transmita informações para a função.
Use parâmetros e eventos para configurar uma armadilha
Este script criará uma parte de armadilha que destrói tudo o que toca a parte, incluindo outras partes. Você terá que usar um parâmetro para configurá-la. Tenha cuidado para ancorar a armadilha onde ela não caia e destrua coisas involuntariamente.
Crie uma nova parte
Uma parte precisa ser configurada para destruir qualquer coisa que a toque.
- Crie uma nova parte que não esteja tocando nada. Se estiver tocando algo, pode ser ativada muito cedo.
- No Explorer, renomeie a parte: TrapPart.
- Ancore a parte.
Configure o script
Use o que você sabe sobre variáveis e a hierarquia do jogo para referenciar a parte da armadilha.
Adicione um novo script na parte da armadilha. Renomeie o script para TrapScript.
Exclua Hello World e adicione um comentário descritivo.
Abaixo do comentário, crie uma nova variável que encontre o pai do script.
-- Destrói tudo o que toca o pailocal trap = script.Parent
Crie uma função com um parâmetro
A armadilha usará uma função para destruir tudo o que tocou a parte. Para funcionar, a função precisa saber o que tocou a parte. E isso significa usar parâmetros. Os parâmetros são digitados dentro do () que vem após o nome de uma função. Eles se parecem com isso:
local function functionName(parameterName)
endA informação real que é passada pelo parâmetro é chamada de argumento. Você criará uma nova função chamada onTouch() com um parâmetro chamado objectTouched que rastreará o que tocar a armadilha e, em seguida, destruirá a parte que está tocando.
Crie uma função local. Pode ser nomeada como quiser, mas esta lição usará onTouch
local trap = script.Parentlocal function onTouch()endDentro do (), digite um nome para o parâmetro. Esta lição usará objectTouched.
local trap = script.Parentlocal function onTouch(objectTouched)endEntre local function onTouch() e end, crie uma instrução de impressão. Você usará isso para verificar se algo está tocando a parte na próxima seção.
local trap = script.Parentlocal function onTouch(objectTouched)print("Algo tocou a armadilha")end
Use um evento para chamar a função
Queremos que a função seja executada sempre que algo tocar a parte. Para que isso aconteça, conecte a função ao evento Touched. Eventos são coisas que acontecem no jogo. Como um jogador tocando uma parte ou perdendo saúde. Quando uma função está conectada a um evento, a função é executada sempre que o evento acontece.
O evento Touched é acionado sempre que uma parte toca outra parte e pode ser usado para criar botões, armadilhas e outros objetos com os quais os jogadores interagem.
Abaixo do end da função, digite trap.Touched:Connect(onTouch)
local trap = script.Parentlocal function onTouch(objectTouched)print("Algo tocou a armadilha")end-- Conecte a função ao evento Touchedtrap.Touched:Connect(onTouch)Clique em Testar e depois toque a parte. Verifique sua instrução de impressão de teste: Algo tocou a armadilha. Se você não conseguir ver a string na janela de Saída, verifique o seguinte:
- Certifique-se de que a string "Algo tocou a parte!" está entre local function onTouch() e end.
- Verifique se Touched está capitalizado.
Agora que a função está configurada corretamente, use-a para destruir tudo o que tocar a parte. Dentro da função, após a string, digite objectTouched:Destroy() O código completo deve ser:
local trap = script.Parentlocal function onTouch(objectTouched)print("Algo tocou a armadilha")-- Destrua o objeto que está tocandoobjectTouched:Destroy()endtrap.Touched:Connect(onTouch)Teste novamente e veja o que acontece quando a parte é tocada. Seu avatar deve acabar sem pés ou braços. Se a parte tocar a cabeça ou o pescoço do avatar, pode até ser completamente destruído.
Resumo
Os parâmetros são usados para passar informações que normalmente estariam fora do escopo (onde uma função não pode vê-las), para dentro de uma função. Enquanto isso, os eventos são sinais especiais que são acionados dentro do jogo quando algo importante acontece. Diferentes objetos têm diferentes eventos. Funções podem ser conectadas a eventos para que sejam chamadas cada vez que o evento é acionado. Este pequeno script conectou uma função ao evento Touched da armadilha e passou o que estava tocando a armadilha através do parâmetro.