0

CameraVisibilitySphere コンポーネントがキャラクターに重なっている場合にキャラクター メッシュを非表示にしようとしているこの三人称キャラクターのブループリントがあります。実際には機能しますが、キャラクターが動く場合のみです。

単純にキャラクターをオブジェクトに近づけ、カメラを回転させてオブジェクトと衝突させ、キャラクターに近づけるだけでは、メッシュは消えません。しかし、キャラクターを少し動かしただけで、どの方向に球体がキャラクターとオーバーラップしても、Is Overlapping Component は true を返し、メッシュは消えてしまいます。

キャラクターを移動せずにメッシュが表示されていない場合、可視球が重ならないようにカメラを回転させても、何も起こりません。その後、キャラクターを動かすと、メッシュが再び表示されます。

OnComponentBegin/EndOverlap を使用してみましたが、コーディングもしましたが、何も変わりません。同じ動作を示します。球を設定するコードは次のとおりです。

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);

ところで、キャラクターのカプセルは、オーバーラップ イベントを生成し、カメラとオーバーラップするように設定されています。

これを機能させるにはどうすればよいですか?そして、最も重要なのは、オーバーラップ イベントが同じアクターの子コンポーネントで呼び出されるかどうかです。

Unreal は初めてなので、まだ環境がよくわかりません。

4

1 に答える 1

0

親で作成されたオーバーラップは、子に継承されます。カメラを取得して MultiLineTraceByChannel を実行し、ヒット結果を壊してヒット アクターをキャラクターにキャストしてから、キャラクター内でコードを起動してカスタム イベントでアクターを非表示にすることができます。

于 2017-11-29T19:52:31.573 に答える