Creare Videogiochi - Game Developer
Delegare un metodo per la gestione delle collisioni - Versione stampabile

+- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi)
+-- Forum: Unreal Engine & Unreal Development Kit (UDK) Italia (https://www.making-videogames.net/giochi/Forum-Unreal-Engine-Unreal-Development-Kit-UDK-Italia)
+--- Forum: Richieste di Aiuto per UDK e Unreal Engine 4 (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-UDK-e-Unreal-Engine-4)
+--- Discussione: Delegare un metodo per la gestione delle collisioni (/thread-Delegare-un-metodo-per-la-gestione-delle-collisioni)



Delegare un metodo per la gestione delle collisioni - samuele55598@gmail.com - 19-03-2017

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


RE: Delegare un metodo per la gestione delle collisioni - samuele55598@gmail.com - 19-03-2017

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>


RE: Delegare un metodo per la gestione delle collisioni - friskon - 19-03-2017

Grazie, potrebbe tornare utile!