Spline CameraがリスポーンしたPlayerに正しく追従するようにする




クラッシュバンディクーのような奥スクロールアクションゲームを制作しています。

SpringArmとSprineに沿って動き、プレイヤーに追従するカメラをつくるところまではできました。
しかしプレイヤーがリスポーンしてPlayerStartに戻るように実装したとき、カメラがPlayerのLocationを取得しなおすことができませんでした。
エラーでは
「Blueprint Runtime Error: “Accessed None trying to read property CallFunc_GetPlayerCharacter_ReturnValue”. Node: Set World Location Graph: EventGraph Function: Execute Ubergraph Level Camera Blueprint: LevelCamera」
と出ます。

初心者ゆえBlueprintをあまり理解できていません。ご教授いただければ幸いです。

まず何が起きてるかですがリスポーンという事は一旦キャラクターが消えて、PlayerStartに再度出現していると思うのですが、再度出現するまではLevelCameraのTick関数にあるGetCharacterPlayerから何も得ることが出来ません。GetCharacterPlayerが無(None)なのにGetPlayerCharacterからGetActorLocationという情報を得ようとしても無理だよね。というエラーです。

そのため、以下の赤枠のノードを追加してGetCharacterPlayerから何も得ることが出来ない場合はその後の処理を行わないようにします。その後のSetWorldLocationは入れる位置の参考にしていただくために仮で置いてあるものなので無視してください。


このIsValidはInputObjectが有効かどうかをチェックし、それによって処理を分岐させるというものです。これでエラーは無くなると思います。

1 Like

返信遅くなり申し訳ありません。
おかげでエラーは解決いたしました!ご丁寧にありがとうございました。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.