Se/allora pratica con le trappole

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Le trappole che diminuiscono la salute dei giocatori sono un elemento di gioco divertente che può essere codificato con dichiarazioni condizionali.Pratica l'uso di condizionali creando una parte che imposta la salute del Giocatorea zero quando viene toccata.

Imposta la trappola

Le trappole funzionano eccezionalmente bene nelle esperienze con sfide basate sul movimento, come gli obby.Questi passaggi inizieranno configurando le variabili e le funzioni necessarie.Fai quanto più puoi senza guardare prima le scatole di codice.

  1. Crea e nomina una parte della trappola. Inserisci uno script nella parte.

  2. Nell' script, aggiungi un commento descrittivo e poi usa una variabile per fare riferimento al parentdello script.


    -- Se un giocatore tocca questa parte, imposta la sua salute a 0
    local trapPart = script.Parent
  3. Crea una funzione chiamata onTouch() con un parametro chiamato otherPart .


    -- Se un giocatore tocca questa parte, imposta la sua salute a 0
    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
  4. Collega la funzione all'evento Touched per eseguire ogni volta che qualcosa tocca la parte.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    end
    trapPart.Touched:Connect(onTouch)

Controlla il tocco del giocatore

Ricorda, il parametro otherPart registra tutto ciò che tocca la parte della trappola, che potrebbe essere una parte di un giocatore o solo la piastra di base.

Per assicurarsi che la trappola distruggerà solo i giocatori e non distruggerà oggetti decorativi casuali, usa una dichiarazione if/then per controllare se ciò che è in otherPart contiene un oggetto Umanoide.

Trova un oggetto specifico

La funzione FindFirstChildWhichIsA() può essere utilizzata per cercare tipi di oggetti specifici, che è utile perché stiamo cercando un oggetto di tipo Umanoide.I giocatori probabilmente toccheranno la trappola con solo una parte del loro Avatar, quindi deve essere impostata una variabile per trovare il genitore della parte toccante e cercarlo per un Umanoide.

  1. In onTouch() , digita local character = otherPart.Parent .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    -- Trova l'oggetto padre di altrePart's
    local character = otherPart.Parent
    end
    trapPart.Touched:Connect(onTouch)
  2. Controlla se character ha un Humanoid digitando:

    local humanoid = character:FindFirstChildWhichIsA("Humanoid")


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    end
    trapPart.Touched:Connect(onTouch)

Controlla con una dichiarazione if

Se viene trovato un Umanoide, imposta la salute dell'Umanoide a zero.

  1. Usa una dichiarazione if per controllare se un Umanoide è stato assegnato con successo a local humanoid .


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Valuta se è stato trovato un Umanoide
    if humanoid then
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Aggiungi una dichiarazione di stampa e controlla il codice finora.


    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Valuta se è stato trovato un Umanoide
    if humanoid then
    print("Found a Humanoid")
    end
    end
    trapPart.Touched:Connect(onTouch)
  3. Esegui il codice e controlla che puoi vedere l'output ogni volta che un giocatore tocca la parte.

Cambia la salute del Giocatore

Se la dichiarazione è vera, puoi usare la stessa variabile umanoide per impostare la salute del Giocatorea 0.

  1. Tra then e end, digita humanoid.Health = 0 .

    scriptcompletato

    local trapPart = script.Parent
    local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    -- Valuta se è stato trovato un Umanoide
    if humanoid then
    print("Found a Humanoid")
    humanoid.Health = 0
    end
    end
    trapPart.Touched:Connect(onTouch)
  2. Prova la trappola.

Sommariamente

Questa parte della trappola ha utilizzato le condizioni per rilevare le parti Umanoid e impostare la salute dell'Umanoid a zero.Questo script è un miglioramento dello script della trappola precedente, che ha distrutto qualsiasi oggetto toccante, indipendentemente da ciò che era.

Tuttavia, ha ancora alcuni difetti.Gli umanoidi non sono solo nei giocatori.Gli umanoidi sono anche trovati in personaggi non giocabili.Lo script è anche solo buono nel impostare la salute del Giocatorea zero.Puoi sperimentare con la sottrazione di una piccola quantità di salute, ma è probabile che sottragga la salute più velocemente del desiderato.Lezioni successive forniscono ulteriori miglioramenti per garantire un maggiore controllo su quanta salute viene sottratta ai giocatori.