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
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? –
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. –
ein Freund hat mir geholfen, es zu implementieren, danke für Ihre Hilfe –