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 は初めてなので、まだ環境がよくわかりません。