• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema radial damage
#1
Per il mio shoot em up ho aggiunto un secondary fire che consiste in una bomba che viene sganciata sotto l'astronave.
Devo quindi usare il radial damage...la bomba come incontra qualcosa (overlap) esplode applicando danno radiale.
Nel bluprint della bomba ho quindi messo una sfera per la collisione e il componente projectile movement.
A livello di event graph ho proceduto cosi:

inizia con "oncomponent begin overlap" (riferito alla sfera collisione) che ho collegato a "spawn emitter at location" che mi serve per il sistema particellare dell'esplosione. Sul suo pin "location" ho messo "get world location" riferito alla referenza della sfera collisione. In poche parole il sistema particellare deve apparire dove c'è la sfera collisione.
L'uscita dello spawn emitter è collegata con "apply radial damage" che ha come radius 200 e damage 200.
Il punto "origin" l'ho collegato a "get world location" riferito anche questo alla sfera collisione.
Come damage causer ho messo la self.

Ora sulla carta dovrebbe funzionare invece mi da un bel problema.
In pratica appena premo il tasto del fuoco secondario la bomba esplode immediatamente (danneggiando anche la mia astronave) ed emettendo il partecillare...poi prosegue la caduta fino a terra dove esplode nuovamente riemettendo il particellare e alla fine scompare.
A parte il fatto che non ho capito perché scompare visto che non ho messo destroy actor ancora...non riesco però a capire perché esplode immediatamente.
La prima cosa che ho pensato è che la collision sphere della bomba toccasse quella dell'astronave ma è impossibile...sono ben distanti e ho provato anche mettendola lontanissima, semplicemente al primo botto fa meno danno perché l'astronave è piu lontana.
Potete aiutarmi?
Inoltre come faccio ad escludere in ogni caso il pawn (l'astronave) dal subire il radial damage della sua stessa arma?
 
Rispondi
#2
Posta uno screenshot del blueprint
 
Rispondi
#3
Questo è il bluprint del fuoco secondario (la bomba):

https://ibb.co/kopOZ6

come ho detto esplode immediatamente danneggiando l'aereo...esplode proprio nel punto di origine da cui parte...poi prosegue in basso si ferma sul terreno ed esplode. Altra cosa strana è che la mesh scompare nonostante io non abbia messo destroy actor. Altra cosa strana...se disabilito "gravity scale" mettendola a zero la bomba esplode immediatamente come sempre però la mesh arriva a terra e non scompare (come dovrebbe visto che non c'è destroy actor) e non fa neanche la seconda esplosione a terra! Se aggiungo destroy actor scompare alla prima esplosione cosa che almeno questa è logica.

Ho fatto un'altra prova usando il danno normale come se fosse un proiettile del fuoco primario e ho usato questo bluprint:

https://ibb.co/fpFcSR

anche stavolta fa danno immediatamente e neanche cade dall'astronave...quindi non centra se è radial damage o no....c'è qualcosa che lo fa overlappare da subito nonostante non sia minimamente a contatto con l'astronave stessa....infatti posso anche mettere il punto di origine dalla parte opposta dello schermo ma fa lo stesso scherzo.
 
Rispondi
#4
Il problema è che non hai "filtrato" l'overlap. Probabilmente appena si crea la bomba essa interseca l'aereo
Soluzioni:
O fai spawnare la bomba distante dall'aereo (sommi alla posizione dell'areo un vettore e li metti in input allo spawn del proiettile)
Oppure filtri l'overlap dell'esplosione come nell'immagine qui linkata:
http://i.imgur.com/g9GsjBk.png
e colleghi particellare e damage però all'uscita False (con True faresti i danni solo al tuo character)
 
Rispondi
#5
Faccio la prova e ti faccio sapere.
Il problema che non mi torna è che il punto di spawn della bomba è gia distante dall'aereo. Nel bluprint dell'aereo ho messo un component scene sotto l'aereo e l'ho referenziato come punto di spawn per il fuoco secondario. Questo benedetto punto è ben sotto l'aeroplano e la sua capsula collisioni quindi non capisco come possano toccarsi....succede anche se lo sposto molto più lontano.
 
Rispondi
#6
Ho risolto il problema! Anche se mi rimane da perfezionare una cosa che ti dico a fine post.
Allora: inizialmente ho messo i comandi che mi hai suggerito tu ma non risolvevano il problema. Ho smanettato per l'ennesima volta sul progetto e ho notato che la sfera collisione e la mesh della bomba avevano impostazioni di collisione differenti! In particolare la mesh non era impostata su nocollision ma mi sembra su worlddynamic o blockalldynamic...questo creava confusione all'engine.
Ora funziona bene, la bomba parte ed esplode solo a contatto dei nemici o del terreno.
Cosa curiosa...se metto su true l'uscita del branch che mi hai suggerito l'astronave non viene distrutta...semplicemente non esplode mai neanche a contatto con nemici o terreno! Ho fatto anche la prova togliendo il filtro e mettendo come avevo fatto io all'inizio e funziona lo stesso...il problema era nelle collisioni della mesh. Comunque per sicurezza il filtro l'ho lasciato.
Ho messo una esclusione per il pawn sull'apply radial damage (get player pawn---make array---ignore actors) altrimenti le esplosioni mi danneggiavano l'astronave se era troppo vicina.
Altra cosa curiosa...la bomba scompare dopo che è esplosa...poco dopo...non dovrebbe visto che non ho messo destroy actor....forse il mio computer sta diventando senziente come skynet e vuole darmi una mano!

Comunque ci sono due cose da risolvere ancora:

1.se lancio la bomba e con l'aereo la interseco questa esplode e poi esplode ancora quando colpisce terra o il nemico. quindi il filtro non funziona e infatti se tolgo il pin dell'esclusione per il pawn sul radial damage ecco che gli infligge danni. Devo fare in modo che non veda proprio il contatto con il pawn...eppure sulle collisioni della bomba ho impostato "ignore pawn".

2.Io sto usando il radial damage SENZA fall off...eppure perché c'è un fall off? Se la bomba cade piu distante dal bersaglio fa meno danni...eppure se non c'è un fall off dovrebbe applicare la stessa quantità di danni in tutto il suo raggio.
 
Rispondi
#7
Allora hai fatto un po' di casino con le collisioni... ti conviene andare nel character e eliminare le collisioni di tutte le static mesh importate e attivare la collisione della sola capsula.
Ho visto che in un post precedente hai chiesto info sull'argomento che non capivi bene...
Leggiti questo link:
https://www.unrealengine.com/en-US/blog/...-filtering
Casomai poi mi chiedi

1- vediti il link.. due oggetti fanno overlap tra di loro quando entrambi hanno overlap o uno ha overlap e l'altro block
2- Metti Do Full Damage spuntato (attivo).

Ciao
 
Rispondi
#8
Ottimo quel link! Spesso sto li a cercare ma non riesco sempre a trovare roba valida perché fondamentalmente non sai con quali termini cercare. Me lo studio bene grazie.


Con full damage ora funziona bene, solo che non ho capito cosa cambierebbe poi rispetto al radial damage con fall off.
Sembrerebbe solo per il fatto che sul secondo posso impostare il raggio di fall off...ma allora sul primo secondo quali parametri lo regola?
 
Rispondi
#9
Non sono sicuro... ma penso che nel primo (Radial Damage) il danno decada linearmente (se disattivato do Full Damage), ovvero sul raggio è 0 e poi cresce in maniera proporzionale fino al centro. Purtroppo di questa cosa non sono sicuro però.

Mentre Radial Damage con fall off funziona così:
All'interno dell'inner Radious hai il danno massimo
All'esterno dell'outer radious hai il danno nullo
Tra inner e outer radious hai una zona dove il danno decade in maniera esponenziale, tale esponente è il valore di Falloff.
 
Rispondi
#10
Mi rimangono da sistemare un paio di cose in merito alle collisioni.
La prima cosa è il fatto che se sgancio la bomba e mentre cade la interseco con l'astronave la bomba esplode e poi esplode nuovamente quando arriva a terra. Ora il danno non me lo fa perchè ho messo l'esclusione del danno sul pawn ma come faccio a non fargli vedere la collisione?
Considera che la bomba ha come tipologia di collisione "vehicle" e ha gia impostato ignora pawn e altri vehicle. Mentre il pawn ha tutti block perchè non posso dirgli di ignorare altri vehicle altrimenti non vedrebbe gli impatti dei proiettili nemici.
Ci deve essere un modo per creare l'esclusione da bluprint penso.

Altro problema...quando il pawn entra a contatto con un elemento dello scenario (ma anche con un nemico) viene bloccato ma dopo un pò si sblocca e lo compenetra attraversandolo. Questo lo fa solo nella direzione di scorrimento...se faccio il contrario andando all'indietro si blocca e basta.
Sicuramente succede perchè il pawn è parentato al movimento della telecamera che lo costringe...servirebbe un sistema che genera un rimbalzo e non un semplice blocco.
 
Rispondi
#11
Dovrei vedere come hai postato le collisioni di astronave, bomba e terreno.
Se puoi postale che poi ti potrei indicare come metterle.
Comunque se vuoi ottenere un rimbalzo devi attivare le collisioni (block) e devi attivare anche la physics (fisica) andando ad editare i parametri fisici dell'astronave

https://www.youtube.com/watch?v=FsDH1kedD4U.
 
Rispondi
  


Vai al forum:


Browsing: 3 Ospite(i)