2017-10-09 3 views
0

Ich habe this dritte Person Charakter Blaupause, in dem ich versuche, das Zeichengitter zu verbergen, wenn die CameraVisibilitySphere-Komponente das Zeichen überlappt. Es funktioniert tatsächlich, aber nur wenn sich der Charakter bewegt.IsOverlappingComponent funktioniert nur, wenn sich der Charakter bewegt?

Wenn ich einfach das Zeichen in der Nähe eines Objekts verschiebe, die Kamera so drehen, dass sie mit dem Objekt kollidiert und sich dem Charakter nähert, wird das Mesh nicht verschwinden. Aber wenn ich das Zeichen nur ein wenig verschiebe, egal in welche Richtung und so dass die Kugel immer noch mit dem Zeichen überlappt, gibt Is Overlapping Component wahr zurück, wie es sollte und das Mesh ist weg.

Wenn das Netz nicht sichtbar ist, ohne das Zeichen zu bewegen, und ich die Kamera so drehen, dass sich die Sichtbarkeitskugel nicht mehr überschneidet, passiert nichts. Wenn ich dann das Zeichen bewege, erscheint das Netz wieder.

Ich habe versucht mit OnComponentBegin/EndOverlap und ich habe es auch codiert, aber nichts ändert sich, es zeigt das gleiche Verhalten. Der Code I die Kugel gesetzt ist dies mit:

CameraVisibilitySphere = CreateDefaultSubobject<USphereComponent>(TEXT("CameraVisibilitySphere")); 
CameraVisibilitySphere->SetupAttachment(FollowCamera); 
CameraVisibilitySphere->SetSphereRadius(12.0f); 
CameraVisibilitySphere->SetCollisionProfileName(TEXT("Actor")); 
CameraVisibilitySphere->bGenerateOverlapEvents = true; 
CameraVisibilitySphere->OnComponentBeginOverlap.AddDynamic(this, &ABatteryCollectorCharacter::OnCharacterBeginOverlap); 
CameraVisibilitySphere->OnComponentEndOverlap.AddDynamic(this, &ABatteryCollectorCharacter::OnCharacterEndOverlap); 

BTW die Kapsel Charakter gesetzt Überlappung Ereignisse zu erzeugen, und mit der Kamera zu überlappen.

Was soll ich tun, damit dies funktioniert? Und, am wichtigsten, werden überlappende Ereignisse auf Kindkomponenten des gleichen Akteurs aufgerufen?

Ich bin neu in Unreal, daher kenne ich die Umgebung noch nicht sehr gut.

Antwort

0

Überlappungen, die im Parent erstellt wurden, werden im Child geerbt. Du kannst versuchen, deine Kamera zu holen und einen MultiLineTraceByChannel zu machen, das Trefferresultat zu brechen und den Schauspieler zu deinem Charakter zu casten, dann in deinem Charakter den Code abfeuern, um den Schauspieler mit einem benutzerdefinierten Ereignis zu verbergen.

Verwandte Themen