育成ゲームを作成しているのですがカメラをUserとしてGameModeのDefaultPawnClassに指定し、育成するキャラクターの体力等のステータスを表示したいのですが、UI側のCastノードで指定するObjectのGetPlayerCharacterのPlayerIndexが指定できずに困っています・・・
Levelで育成キャラクターを選択した時の詳細にあるInputにPlayer1を割り当ててPlayerIndexに1を指定してもCastに失敗してしまいます.
PlayerIndexを任意の数字に割り当てる方法をご教示頂きたいです、よろしくお願いします.
これはMultiplay用のゲームでしょうか?
PlayerIndexはSingleplayの場合常に0となり、Singleplayで1を指定するとnullを返すかと思われます。
Multiplay時(CreateLocalPlayerなどでPlayerが複数存在する際)にPlayer1から順に0から割り当てられます。
まずはこちらをご確認頂けますと幸いです。
SinglePlay用です,普通の育成ゲームと同じく操作する人のみがいる感じです
Widgetでキャラクターのステータスを表示するにはWidgetのイベントグラフで育成キャラクターをCastして育成キャラクター型の変数にSet(Q2枚目の画像)してWidgetのデザインにあるPercentに育成キャラクターが持っている変数の値を表示させるという方法を取っています。(Bindで関数にする方法より楽だったので)
その際(関数にする場合でも)Castする必要がありCastノードはObjectを指定しなければならなく(CastするObjectの指定)、GetPlayerCharacterでしか適合できず、育成キャラクターもCharacter型で作ってステータスを表示している形になります。(GameModeも仮でDefaultPawnClassは育成キャラクターにしています)
ですのでUserをDefaultPawnClassにした際にGetPlayerCharacterが機能しなくなるので育成キャラクターにPlayerIndexを当てることができたらステータス表記も上手くいくのではないかと考えた次第でございます。
CastノードのObjectにActor型等が当てられる方法がありましたらそちらを教えて頂きたいです、よろしくお願いします。
PlayerIndexはプレイヤー(1P、2Pなど操作者)を認識するための番号のようなものなので、GetPlayerCharacterで1を指定するとSingleplayであれば2人目のプレイヤーが存在しないのでnullとなるかと思います。
DefaultPawnClassに指定したクラスはGetPlayerCharacter(GetPlayerPawn)で取得できますが、それ以外のアクターを参照する場合は、SpawnしたクラスからObjectを渡す方法や、GetAllActorsOfClassなどでアクターを取得できます。
GetAllActorsOfClass凄く便利です、ありがとうございます!
ちなみにSpawnしたActorを受け渡す場合は、Spawnする時にActorを配列に格納してそれを参照するといった形でよろしいでしょうか?
追加で回答よろしければお願いします。
丁寧な説明まで付けて下さりありがとうございます。
ようやくゲーム作成の方を一気に進められそうです、これからも精進して参りたいと思います、重ねてお礼申し上げます。