Normalmente, as funções só podem usar as informações que possuem codificadas dentro delas. No entanto, às vezes você pode não saber de antemão qual será essa informação, ou deseja ser capaz de reutilizar a mesma função com várias peças de informações semelhantes. Por exemplo, se você quiser 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 criar uma armadilha
Este script criará uma peça de armadilha que destrói tudo o que toca a peça, incluindo outras peças. Você precisará usar um parâmetro para configurá-lo. Tenha cuidado para ancorar a armadilha onde ela não caia e destrua as coisas de forma não intencional.
Crie uma nova parte
É necessário configurar uma parte que destruirá qualquer coisa que a toque.
- Crie uma nova parte que não esteja tocando nada. Se estiver tocando algo, pode sair do lugar 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 de experiência para referenciar a parte de armadilha.
Adicione um novo script à parte de armadilha. Renomeie o script para TrapScript.
Apague Hello World e adicione um comentário descritivo.
Sob o comentário, crie uma nova variável que encontre o pai do script.
-- Destroi tudo que toca o pailocal trap = script.Parent
Crie uma função com um parâmetro
A armadilha usará uma função para destruir tudo 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 da função. Eles parecem com isso:
local function functionName(parameterName)
end
As informações reais que são transmitidas através do parâmetro são chamadas de argumento. Você criará uma nova função chamada onTouch() com um parâmetro chamado objectTouched que irá rastrear tudo o que toca a armadilha e, em seguida, destruir a parte que toca.
Crie uma função local. Pode ser nomeada de qualquer forma, 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 fazer isso acontecer, conecte a função ao evento Touched. Eventos são coisas que acontecem na experiência. 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 ocorre.
O evento Touched é disparado 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, em seguida, 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!" esteja entre local function onTouch() e end.
- Verifique se Touched está com a primeira letra maiúscula.
Agora que a função está configurada corretamente, use-a para destruir tudo o que toca 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 tocaobjectTouched: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 de 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 da experiência quando algo importante acontece. Diferentes objetos possuem diferentes eventos. Funções podem ser conectadas a eventos para que sejam chamadas cada vez que o evento é disparado. Este pequeno script conectou uma função ao evento Touched da armadilha e transmitiu o que estava tocando a armadilha através do parâmetro.