‫Ciao e Benvenuto.
‫In questa lezione, installeremo un grabber in modo da poter effettivamente prendere la nostra statua
‫di gargoyle e portarla in giro con noi davanti a noi.
‫Immergiamoci e vediamo come lo facciamo.
‫Quindi è tempo per noi di iniziare a chiamare questa allocazione di componenti grab con una rotazione.
‫Ora, come ho detto prima, ci sono in realtà due parti in questo.
‫Dobbiamo afferrare il componente e poi impostare la posizione e la rotazione del target in modo
‫che si muova.
‫Quindi prima le cose.
‫Nella nostra funzione di cattura, avremo bisogno di un puntatore al nostro handle di fisica.
‫Quindi copierò la riga da Begin Play e andrò al grabber e lo inserirò
‫qui.
‫E per proteggerci da questo essere nullo.
‫Ebbene, cosa dovrebbe succedere?
‫Bene, in realtà, non c'è niente che vogliamo fare.
‫Se non abbiamo una maniglia fisica, non possiamo afferrare nulla.
‫Quindi potremmo inserire l'intero corpo di questa funzione grab in un'istruzione if, ma può sembrare un po'
‫disordinato.
‫Quindi quello che possiamo fare invece è quello che è noto come un ritorno anticipato.
‫In sostanza, diciamo solo se la fisica gestisce.
‫Uguale a puntatore nullo.
‫Devi mettere un doppio segno di uguale qui.
‫Altrimenti è un incarico.
‫Quindi possiamo scendere a fare delle parentesi graffe e possiamo semplicemente mettere un ritorno qui.
‫Quindi quello che farà è se abbiamo un punto nullo per l'handle della fisica, ritorna
‫immediatamente e non esegue il resto della funzione, rendendo così sicuro nel resto della
‫funzione l'uso della fisica gestire come desideriamo.
‫Quindi lo faremo.
‫Andremo giù dove abbiamo un successo.
‫Penso che non abbiamo più bisogno di questi messaggi di registro.
‫Quindi rimuoverò le istruzioni alt.
‫Rimuoverò praticamente tutto dal corpo dell'istruzione F e useremo il nostro
‫grabber.
‫Quindi faremo i componenti di presa della freccia della maniglia della fisica in una posizione con rotazione.
‫Quindi dobbiamo fornirgli un componente che stiamo cercando di afferrare.
‫Se dai un'occhiata, la cosa che si aspetta sono i tuoi componenti primitivi.
‫Vediamo se abbiamo qualcosa del genere nel nostro risultato di successo.
‫Basta andare alla pagina della documentazione per questo e cercare i componenti primitivi e puoi vedere
‫che il componente get restituirebbe il componente primitivo che è stato colpito.
‫Perfetto.
‫È proprio quello di cui abbiamo bisogno.
‫Quindi abbiamo dovuto cercare i componenti dot get del risultato di successo e questo ci darà ciò che
‫vogliamo per il primo argomento.
‫Ora il prossimo è un nome F per un arco.
‫Ora in realtà non vogliamo afferrare nulla per un osso particolare.
‫Questo sarebbe il caso se avessimo una rete scheletrica, ma non è così.
‫Abbiamo una mesh statica, quindi usiamo solo il nome, senza sottolineare nessuno.
‫E in generale, con i nomi F in cui si parla di ossa, questo viene fuori abbastanza.
‫Se non vuoi inserire nulla, usi il nome, non sottolinea nessuno.
‫Ora abbiamo bisogno del luogo in cui lo prenderemo.
‫E abbiamo già detto che abbiamo esaminato questo.
‫È il punto di impatto del punto del risultato del colpo e quindi la rotazione, la rotazione corrente di quel componente eseguirà tutta
‫la rotazione corrente dell'attore, a seconda di quale preferisci.
‫Quindi il risultato dei colpi ottiene componenti.
‫Prenderemo quei risultati.
‫Ottieni la freccia del punto del componente perché è un puntatore.
‫Ottieni la rotazione dei componenti come.
‫Quindi ora può mettere le parentesi di chiusura su una riga separata e io metterò punto e virgola che
‫terminano l'istruzione e che dovrebbero essere efficaci per afferrare i nostri componenti.
‫Ora, la parte successiva del puzzle è nel componente tick in cui vogliamo usare di nuovo la maniglia della fisica.
‫Quindi per ora copierò il codice, sapendo che copiare il codice in tre posti è un po'
‫troppo, e potremmo pensare di estrarlo in una funzione in modo da riutilizzarlo.
‫Ma i componenti di aspirazione utilizzeranno una maniglia fisica.
‫Torneremo presto se non riusciamo a procurarci una maniglia di fisica.
‫E poi quello che faremo è provare a impostare quei luoghi target.
‫Farò una maniglia fisica, un set di frecce, la posizione del bersaglio e la rotazione.
‫E riflettiamo un po' su questo.
‫Che tipo di località target potremmo essere interessati a impostare?
‫Bene, essenzialmente, sarà lo stesso che abbiamo fatto con l'end point.
‫Prenderemo la nostra posizione attuale, quindi la sposteremo verso l'esterno di una certa
‫distanza.
‫Ora, questo sarà configurabile.
‫Potresti usare la distanza massima di presa, ma trovo che in pratica sia troppo lontana.
‫Quindi, se andiamo dal nostro Grandpa Dot H, creeremo una nuova, nuova proprietà chiamata Edit Anywhere.
‫E sarà un galleggiante chiamato distanza di attesa.
‫E lo imposterò a 200.
‫Quindi sarà molto più vicino al giocatore.
‫Ora, se vogliamo prendere un CP, possiamo entrare nella nostra funzione take e provare a creare questo target.
‫La posizione deve essere un vettore F chiamato posizione target.
‫Lo imposteremo uguale alla posizione di un componente più il vettore di avanzamento moltiplicato per la
‫distanza di mantenimento.
‫Quindi possiamo usarlo come posizione di destinazione.
‫Questo sarà il nostro primo argomento e poi avremo bisogno della rotazione dell'obiettivo.
‫Bene, per questo, userò solo la rotazione del componente corrente in modo che mentre ci guardiamo
‫intorno, ruoteremo l'oggetto con la nostra vista in modo da poter semplicemente eseguire la rotazione del componente per ottenere la
‫rotazione di il componente della scena del grabber corrente.
‫Bello mettere il punto e virgola alla fine di quella riga e ricompilare e vedere come funziona.
‫Ora, dopo aver compilato correttamente, selezioniamo il gargoyle e assicuriamoci di cambiarne la
‫mobilità da START.
‫Pensa a mobile perché ne abbiamo bisogno per potersi muovere in risposta alla fisica e assicuriamoci che stia
‫simulando la fisica.
‫Andiamo alla categoria fisica e controlliamo il pulsante simula fisica.
‫Premiamo play e proviamo a prenderlo.
‫Quindi non sta succedendo nulla al momento, ma sembra essere bloccato all'interno del pavimento, quindi non è
‫l'ideale.
‫Proviamo a sollevarlo un po' in modo che non sia bloccato all'interno del pavimento.
‫Lascialo cadere sul pavimento in quel modo e ora prova a raccoglierlo.
‫Sembra che sia rimasto bloccato di nuovo nel pavimento.
‫Quindi proviamo una seconda volta.
‫Bene.
‫Quindi è un po' inaffidabile e a volte se lo prendi subito, raccoglie bene
‫il gargoyle e puoi raccoglierlo in quel modo.
‫Sto notando che la rotazione non è corretta, e questo perché ho usato la cosa sbagliata nell'afferrare il componente
‫fisico.
‫Ho ottenuto la rotazione del gargoyle e ora stiamo cercando di mantenere quella rotazione che avevo effettivamente bisogno
‫di usare era la rotazione che stiamo usando per prendere la rotazione del grabber.
‫Quindi andiamo avanti e cambiamo e ricompiliamo e premiamo di nuovo play e proveremo a prenderlo.
‫Ecco qua.
‫Questa volta l'ho afferrato e ho ottenuto la rotazione corretta, l'esatta rotazione che aveva.
‫E puoi vedere che sembra essere stato afferrato da una molla.
‫Se provo a spingerlo attraverso un muro, cerca di non passare attraverso il muro il più possibile.
‫Alla fine sbuca attraverso il muro, ma sta cercando di osservare la fisica mentre lo sposto.
‫Quindi ti sfidiamo ora a tirare fuori una nuova funzione chiamata ottieni un handle di fisica.
‫Sarà privato.
‫Dovrebbe restituire una U.
‫La fisica gestisce il componente e dovrebbe rimuovere questo codice duplicato di dover ottenere il proprietario e
‫trovare il componente per classe.
‫Puoi anche farlo potenzialmente contattare, vedere se puoi e farlo loggare.
‫Se non disponiamo di un componente di gestione fisica, fornisci un registro di avviso in modo che venga visualizzato e sappiamo che abbiamo
‫fatto qualcosa di sbagliato.
‫Metti in pausa il video e prova.
‫Bene.
‫Ben tornato.
‫Prima di tutto, andiamo all'intestazione del file dove lo metteremo nella sezione privata.
‫Ma sotto le proprietà, farò in modo che restituisca un po' di fisica, gestisca i componenti e metta un
‫asterisco qui.
‫Ora, poiché stiamo usando questo tipo qui nell'intestazione, dobbiamo effettivamente prendere il nostro include e tagliarlo fuori
‫dal grabber.
‫Quindi l'incluso per quanto riguarda l'handle della fisica, dobbiamo inserirlo nel punto h del
‫grabber dove lo metteremo sopra l'h generato.
‫Questa è l'ultima cosa sempre nella nostra testata dei file.
‫E perché non abbiamo bisogno di averlo anche nel PC?
‫Bene, perché stiamo includendo Grab o H, quindi tutto ciò che inseriamo, prendilo o
‫H sarà automaticamente nel CP in modo da poterlo inserire lì.
‫Ora possiamo andare al punto in cui stiamo definendo questa funzione e chiamarla il potere di gestione della fisica delle
‫parentesi del genere.
‫E penso che questo dovrebbe essere costante, non dovrebbe cambiare nulla nel nostro grabber per chiamare questa funzione.
‫Basta andare al CP, andare in fondo dove incollerò in definizione, attaccherò i due punti del
‫tuo grabber nella parte anteriore e poi rimuoverò il punto e virgola, aggiungendo un paio di parentesi graffe.
‫E quello che vogliamo fare è prendere dove abbiamo questo get on line e lo taglieremo e lo
‫sostituiremo con un get physics.
‫Maneggiare come sapone.
‫E poi nell'handle get physics, possiamo semplicemente restituire il componente get owner find per classe, ecc.
‫E ora possiamo sostituire questo anche quando lo stiamo facendo nella componente tic, stiamo entrando in possesso della maniglia della
‫fisica.
‫Sostituiamo quel pezzetto di codice con ottenere un handle di fisica.
‫Ora è un piccolo pezzo di codice, quasi non ne vale la pena, ma ne vale sicuramente
‫la pena per la pratica a questo punto e per il fatto che ora potremmo aggiungere alcuni messaggi di registro e iniziare a giocare.
‫In realtà non abbiamo bisogno di gestire la fisica, quindi rimuoverò semplicemente quel codice lì.
‫Ma quello che farò è aggiungere un messaggio di registro.
‫Quindi creeremo una variabile per memorizzare il nostro risultato qui, perché se restituiamo e poi proviamo a stampare un
‫messaggio di registro, non funzionerà.
‫Quindi avremo un nuovo componente di gestione della fisica chiamato result.
‫Questo è che torneremo fuori da qui e diremo se il risultato è uguale a puntatore nullo, beh, allora abbiamo bisogno
‫di un nuovo registro con un avviso o in effetti, un errore, davvero.
‫E diremo che il grabber richiede un nuovo componente della maniglia fisica.
‫E poi dopo l'istruzione if.
‫Quindi questo accadrà.
‫Indipendentemente dal fatto che sia nullo o meno, restituiremo il risultato.
‫Quindi andiamo avanti e compiliamolo e controlliamo che tutto funzioni.
‫Sembra aver avuto successo e posso vedere che deve funzionare perché quando faccio clic con il pulsante sinistro del mouse sulla scena
‫ottengo le sfere blu o di debug che vengono disegnate e non verrebbero disegnate se non ce l'avessimo.
‫La fisica gestisce i componenti.
‫Roba fantastica.
‫Quindi in questa lezione siamo stati in grado di afferrare la nostra statua di gargoyle usando il nostro grabber, anche se a
‫volte può essere un po' inaffidabile.
‫E lo risolveremo nelle prossime lezioni, quindi ci vediamo lì.