Creare Videogiochi - Game Developer

Versione completa: Delegare un metodo per la gestione delle collisioni
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Eccomi ancora, ho girato tutto il possibile immaginabile e ho notato che la documentazione di UE è a dir poco scandalosa,
comunque...sto tentando di ricreare il progetto di unity della sfera che ruota dove bisogna collezionare i cubi, e nel creare la classe del cubo ho un problema, la gestione delle collisioni per l'appunto. L'obiettivo e distruggere il cubo e accumulare il punto, per farlo devo "creare" un metodo per rilevare la collisione. A tal fine ho trovato OnComponentHit.Add() ho capito che come parametro ci va un delegato ovvero (se ho ben capito) un metodo da chiamare quando occore quell'evento (un pò come succede per l'input). Dopo questa infinita prefazione, il codice è il seguente:

Codice:
UPROPERTY()
    class UShapeComponent* collider;
collider->OnComponentHit.Add(&AtoCatch::OnHit);
UFUNCTION()
    void OnHit(AActor* other, class UPrimitiveComponent* otherComp, FVector normalImpulse, const FHitResult& hit);
Ottenendo il seguente errore:

Errore (attivo) non esiste alcun costruttore adatto per eseguire la conversione da "void (AtoCatch::*)(AActor *other, UPrimitiveComponent *otherComp, FVector normalImpulse, const FHitResult &hit)" a "TScriptDelegate<FWeakObjectPtr>" Rolling_learn_cpp c:\Users\Samuele\Documents\Unreal Projects\Rolling_learn_cpp\Source\Rolling_learn_cpp\toCatch.cpp 17

non so cosa fare, con cose basilari in quanto essenziali come le collisioni la documentazione è carente, figuriamoci con cose di più alto livello...non mi sorprende che Unity sia più popolare -.- Ah gia...grazie per la considerazione :3
Trovata la risposta...se non venivo qui a rompere non l'avrei trovata, sperduta in quel blog...comunque ecco qui spero possa esser d'aiuto per qualcuno:
<code>
TScriptDelegate<FWeakObjectPtr> delegateFunction;
delegateFunction.BindUFunction(this, "nomeDelMetodo");

// Say when you want the delegate function to be run (in this case, On overlap of components)

CollisionSphere->OnComponentHit.Add(delegateFunction);
</code>
Grazie, potrebbe tornare utile!