2016-03-26 5 views
0

Ich mache ein Projektil, das ich feindliche Objekte zerstören will, die grundlegende schwebende Objekte sein werden
Wie bekomme ich es so beide Objekte werden zerstört, wenn sie von einem bestimmten Akteur getroffen werden.ue4 C++ destory on hit wenn specific actor

oben ist, was ich im Moment habe, aber zerstört alles, was es nicht was ich will.

Ich glaube, es sollte eine einfache if-Anweisung sein, aber bin mir nicht sicher, wie man es schreibt.
Vielen Dank im Voraus

Antwort

0

Andere ist jeder AActor, also jedes Mal, wenn Sie einen AActor treffen, werden Sie das Projektil und andere zerstören. Ich nehme an, was Sie wollen, ist, dass, wenn Ihr Projektil irgendetwas trifft, das Projektil zerstört wird, und wenn das Objekt, das es trifft, der richtige Typ ist, dann wird dieses Objekt auch zerstört.

Vermutlich werden die Objekte, die vom Projektil zerstört werden sollen, von AActor abgeleitet. Etwas wie:

class DestroyableEnemy : public AActor 
    { //class definition 

    }; 

So wissen Sie Ihre Andere ist ein Zeiger auf ein AActor, was Sie wissen wollen, ob, speziell, es ist ein Zeiger auf eine DestroyableEnemy (oder was auch immer Sie es genannt haben). Die beiden Möglichkeiten, die Sie in C++ ausführen können, sind dynamic_cast und der typeid-Operator. Die Art, wie ich es mit der Hand machen kann, ist mit dynamic_cast. Du wirst VERSUCHEN und den generischen AActor in einen DestroyableEnemy umwandeln. Wenn es ein DestroyableEnemy ist, erhalten Sie einen Zeiger darauf. Ist dies nicht der Fall, erhalten Sie nur einen Nullzeiger.

DestroyableEnemy* otherEnemy = dynamic_cast<DestroyableEnemy*>(Other); 
if(otherEnemy){ 
    //if otherEnemy isn't null, the cast succeeded because Other was a destroyableEnemy, and you go to this branch 
    otherEnemy->Destroy(); 
}else{ 
    // otherEnemy was null because it was some other type of AActor 
    Other->SomethingElse(); //maybe add a bullet hole? Or nothing at all is fine 
}; 

Übernommen aus: https://en.wikibooks.org/wiki/C%2B%2B_Programming/RTTI

+0

Dank, dass genau das, was ich wollte, eine Chance, Sie wissen, wie ich eine zerstörbare Mesh in c implementieren würde ++ anstatt nur aus der Höhe zu entfernen? –

+0

Wie explodiert es zum Beispiel? Das ist eher eine Animationssache und Sie möchten, dass die Animation ausgelöst wird, wenn ein Ereignis (wie hp = 0) auftritt. –

+0

ein Freund hat mir geholfen, es zu implementieren, danke für Ihre Hilfe –