‫Ciao.
‫Ben arrivato.
‫In questa lezione, renderemo il grabber molto più affidabile.
‫E renderemo anche possibile far cadere un componente afferrato in modo da poterlo lanciare in giro e
‫in generale renderlo un po' più utile.
‫Immergiamoci e vediamo come è fatto.
‫Ora, il motivo per cui spesso non siamo in grado di raccogliere questo gargoyle è che
‫i componenti che simulano la fisica per motivi di prestazioni andranno a dormire quando sono stati fermi per un certo periodo di tempo.
‫Ed è quello che stiamo vedendo.
‫Questa simulazione fisica dei gargoyle andrà a dormire e non verrà svegliata quando ci attacchiamo con
‫la nostra maniglia fisica.
‫Quindi quello che dobbiamo imparare a fare è svegliarlo quando lo colpiamo con una traccia sferica.
‫Ora andiamo a dare un'occhiata alla documentazione dei componenti primitivi che abbiamo visto.
‫Il tuo componente primitivo è la cosa restituita dal nostro risultato di successo, ma quello che in realtà è un
‫componente primitivo.
‫Quindi qui nella documentazione si dice che un componente primitivo è un componente di scena che contiene
‫o genera una sorta di geometria ed è reso o utilizzato come dati di collisione.
‫Quindi, in generale, i componenti primitivi sono quelli che possono simulare la fisica.
‫Quindi possiamo aspettarci di trovare alcuni metodi di simulazione fisica qui.
‫E quello che cercherò è una funzione con la parola chiave wake in essa.
‫Esamineremo alcune funzioni finché non ne troviamo una che dice Sveglia tutti i corpi rigidi.
‫I corpi rigidi sono essenzialmente un termine fisico per oggetti che simulano la fisica.
‫Quindi puoi vedere che ha un vuoto.
‫Il tipo restituito non accetta argomenti.
‫Quindi dovremmo essere in grado di chiamarlo semplicemente quando stiamo cercando di attaccarci ad esso.
‫Quindi, se andiamo a prendere un CP all'interno della nostra istruzione if, abbiamo colpito questo componente, stiamo per
‫prenderlo.
‫La prima cosa che dobbiamo fare è forse creare una variabile per memorizzare questo componente primitivo.
‫Quindi avremo un puntatore del componente primitivo chiamato set di componenti hit che è uguale al componente dot
‫get del risultato hit.
‫E quindi usando quel puntatore del componente colpito, possiamo riattivare con la freccia tutti i corpi rigidi e quindi mettere le parentesi e il punto
‫e virgola alla fine.
‫Quindi questo dovrebbe solo dare un calcio a quel componente, svegliarlo in modo che risponda alla maniglia della fisica.
‫Ora sostituiamo dove abbiamo fatto risultati di successo.
‫Non ottenere componenti nella nostra chiamata di handle di fisica per acquisire la posizione del componente perché ora abbiamo una
‫variabile per quello e ricompiliamo quando è fatto.
‫Andiamo avanti e premiamo play e lascia che il gargoyle si sieda un po' sul pavimento per ora e lascialo andare
‫a dormire e poi prova a sollevarlo.
‫E noterai che non abbiamo problemi a raccoglierlo, a lasciarlo sdraiato sul pavimento, qualunque cosa.
‫Andrà tutto bene, svegliare quei corpi rigidi della fisica e iniziare a simularli in modo che possano essere
‫sollevati e afferrati.
‫Ora, potresti aver notato che al momento non siamo in grado di
‫rilasciare l'handle della fisica, quindi sarà la tua sfida farlo nella funzione di rilascio.
‫Quindi chiamerai il componente di rilascio su quella maniglia fisica.
‫Questa è una funzione disponibile sul puntatore dell'handle della fisica.
‫Verificherai prima se abbiamo un componente catturato.
‫Quindi, se ottieni un componente grab che restituisce un puntatore al componente grab, quei punti saranno nulli
‫se l'handle della fisica non sta attualmente afferrando nulla.
‫Quindi puoi usarlo per verificare se abbiamo qualcosa e rilasciare solo se stiamo attualmente afferrando
‫qualcosa.
‫E come bonus, puoi provare a vedere se riusciamo a fissare di nuovo l'obiettivo.
‫Solo se stiamo afferrando qualcosa, ma guarda il video e provaci.
‫Ben tornato.
‫Allora andiamo a prendere una tazza.
‫Andando nella funzione di rilascio e rimuovendo il registro di rilascio.
‫E qui inseriremo un'istruzione if e diremo se e ora dobbiamo entrare in possesso delle
‫nostre maniglie della fisica.
‫Quindi, prima di tutto, faremo un puntatore del componente dell'handle della fisica, che chiameremo l'handle
‫della fisica e lo imposteremo uguale per ottenere l'handle della fisica.
‫Quindi diremo che se l'handle della fisica è uguale a puntatore nullo, vogliamo andare avanti e tornare perché non saremo
‫in grado di fare nulla, rilasciare nulla.
‫Se non abbiamo affatto un handle di fisica, allora vogliamo controllare se attualmente ci stiamo aggrappando a qualcosa con il nostro
‫handle di fisica.
‫Quindi, se, diciamo, se le parentesi del componente afferrato della freccia dell'handle della fisica non sono uguali a un puntatore nullo, all'interno del corpo
‫di questa dichiarazione if significa che abbiamo qualcosa attualmente afferrato, allora faremo
‫un componente di rilascio della freccia dell'handle della fisica , che lo lascerà andare, come suggerisce il
‫nome.
‫E una cosa che non ho fatto nel codice qui, ma probabilmente vale la pena aggiungerla alla tua, è
‫che prima di rilasciare il componente, vale la pena andare avanti e chiamare i componenti catturati e quindi aggiungere i corpi rigidi tutti
‫deboli proprio come abbiamo fatto noi prima di prendere il componente.
‫Perché se dovessimo far crescere un componente e non spostarci per un po', potrebbe anche andare a dormire.
‫E quindi rilasciarlo non servirebbe a nulla.
‫Quindi vale la pena aggiungere questo perché catturerebbe quel caso d'angolo e non vogliamo impostare la posizione di destinazione in
‫tick se abbiamo un handle di fisica che attualmente non sta afferrando nulla.
‫Quindi qui nei nostri componenti tick, inseriremo un'istruzione if che sarà esattamente la stessa.
‫Dirà che la freccia della maniglia della fisica ottiene un componente afferrato non uguale al puntatore nullo.
‫Quindi, nel corpo dell'istruzione if, inseriremo anche il calcolo della posizione di destinazione e l'impostazione della
‫posizione di destinazione in quella maniglia fisica.
‫Ricompiliamo e proviamo questo.
‫Andiamo avanti e premiamo play.
‫E prova ad afferrare il gargoyle.
‫E poi se lascio andare il mouse, cade di nuovo sul pavimento.
‫Quindi e sembra non essere influenzato dal fatto che sia sveglio o addormentato.
‫Sembra che lo stiamo svegliando, indipendentemente dal fatto che lo facciamo ogni volta che lo raccogliamo, essenzialmente.
‫Quindi sembra funzionare esattamente come vorrei.
‫Non si blocca.
‫Sembra quasi giusto.
‫L'unica cosa leggermente strana è che quando ci passo dentro, puoi vedere che fa questo strano tremolio perché
‫in realtà si scontra con il giocatore.
‫Ora possiamo risolvere questo problema solo un po' andando al nostro gargoyle nel riquadro dei dettagli, selezionando tutta la
‫categoria, scorrendo verso il basso fino alla collisione e guardando il nostro preset di collisione personalizzato e in basso
‫nelle risposte dell'oggetto.
‫Vedremo un po' di più su questo più avanti.
‫C'è una risposta dell'oggetto pedone.
‫Questo in pratica dice: dovrei scontrarmi con il pedone o cosa?
‫Quale dovrebbe essere la mia risposta al pedone?
‫Bene, lo imposterò in modo che si sovrapponga al pedone.
‫E questo significa che se si scontra con me, essenzialmente lo ignora.
‫E poi un'altra cosa che dobbiamo fare è perché questo è in realtà composto da due mesh statiche,
‫hanno le proprie impostazioni di collisione.
‫Vado giù al cumulo di terra.
‫Quella è la cosa sotto il gargoyle.
‫E qui mi limiterò a semplificare le cose.
‫Farò la parte del cumulo di terra, non ho collisione.
‫Quindi lo passerò al preset no collisione.
‫Poi vado avanti e premo play, afferro il gargoyle dal pavimento.
‫E ora puoi vedere quando sto correndo con esso, non c'è nessuno di quegli
‫strani glitch perché non sta cercando di entrare in collisione con la mesh di collisione del giocatore.
‫Roba fantastica.
‫In questa lezione abbiamo imparato come rendere la nostra presa molto più affidabile e anche come possiamo rilasciare
‫la componente di presa.
‫Roba fantastica.
‫Ci vediamo alla prossima lezione.