ThirdPersonテンプレートのThirdPersonCharacterのマテリアルがデフォルトのままのものと、赤いマテリアルをつけたThirdPersonCharacterのどちらかを選択してプレイできるようにしたいのですが、
どのように処理を書けば可能でしょうか?
スタート画面の後に、キャラクターの選択のWidgetを表示させ、そこにデフォルトのマテリアルのキャラクターのボタンと赤いマテリアルのキャラクターボタンを作っています。
ThirdPersonテンプレートのThirdPersonCharacterのマテリアルがデフォルトのままのものと、赤いマテリアルをつけたThirdPersonCharacterのどちらかを選択してプレイできるようにしたいのですが、
どのように処理を書けば可能でしょうか?
スタート画面の後に、キャラクターの選択のWidgetを表示させ、そこにデフォルトのマテリアルのキャラクターのボタンと赤いマテリアルのキャラクターボタンを作っています。
Game Instance を使えばレベルを跨いで、値を保持することが出来るので、選択したキャラクタの値を保存してゲームプレイレベルで値に応じたプレイヤーキャラクターの生成を行う、という手順になると思います。
Youtube で英語ですがキャラクター選択を実装するチュートリアル動画があったので貼っておきます。
返信有難うございます。
参考に貼っていただいたURLを見てみたいと思います。
有難うございました。
参考の動画を見させていただきました。
やってみたところ動画と同じようにCharacterの変更をしてプレイすることができましたが、疑問点があり再度質問させていただきたいと思います。
この参考の動画では、SK_Mannequinを複製しマテリアルを変えることで二つのキャラとしているようなのですが、
Meshはサードパーソンのままなので、このサードパーソンのMeshでなく、違う人間のMeshを使うことでCharacterとしたいのですが、どこを変更すると可能でしょうか?
Characterの選択としては、サードパーソンと別の人間という2つの選択にしたいと考えています。
Game Instanceクラスにマテリアルとスケルタルメッシュの変数を作成しています。これに Anim Instanceのクラス型 変数を追加します。
動画の11分20秒あたりでGameInstanceクラスにスケルタルメッシュをセットしていますが、これをお好みのスケルタルメッシュに変更し、変更したセットしたスケルタルメッシュが使用するアニメーションブループリントのクラスをGame Instanceクラスに新しく追加した変数にセットします。
続いて13分10秒あたりでThirdPersonCharacterクラスのConstruction ScriptでSet Skeletal Meshでメッシュを変更しています。恐らくこのままだとアニメーションが動かないはずですので、Set Skeletal Meshノードの直後にMeshからSet Anim Instance Classノードを引っ張り出し、Game InstanceクラスからAnim Instanceのクラス型変数をゲットして、Set Anim Instance Classノードにセットしてあげれば良いはずです。
回答を参考に処理をしてみましたが、失敗しているようで、ボタンを押してのキャラクターの切り替えはできているようなのですが、 GameStartした際に、アニメーションが動いていなくTポーズになったまま動きます。
ProtoCharacterはアニメーションがなかったので、プロジェクトに追加して、Thirdpersoncharacterのものを使ってアニメーションをリターゲットしました。
>動画の11分20秒あたりでGameInstanceクラスにスケルタルメッシュをセットしていますが、これをお好みのスケルタルメッシュに変更し、変更したセットしたスケルタルメッシュが使用するアニメーションブループリントのクラスをGame Instanceクラスに新しく追加した変数にセットします。
ここのところですが、CharselectWidgetのBPの中のChara3のボタンの処理の中の Set Skeltal MeshをSK_PrototypeMに変更し、char1、char2とは違うSK_mannequinにしましたがこれで合っていますでしょうか?
>続いて13分10秒あたりでThirdPersonCharacterクラスのConstruction ScriptでSet Skeletal Meshでメッシュを変更しています。恐らくこのままだとアニメーションが動かないはずですので、Set Skeletal Meshノードの直後にMeshからSet Anim Instance Classノードを引っ張り出し、Game InstanceクラスからAnim Instanceのクラス型変数をゲットして、Set Anim Instance Classノードにセットしてあげれば良いはずです。
ここのところが失敗しているようなので、キャプチャをつけますので、どこが間違っているかご指摘いただけますでしょうか?
また、SK_PrototypeMのメッシュの中のSkeltal MeshのPost Process Anim Bluprintには何も設定しないで良いのでしょうか?
CharSelectWidgetを拝見しましたが、色々足りていない用に見えます。
Set Skeletal Meshで新たにスケルタルメッシュを設定していますが、Set Anim Instance Classでアニメーションブループリントのクラスを指定していないため、ProtoCharacterはTポーズのままになっていると思います。
こちらでも試しに組んでみました。スケルタルメッシュはParagonアセットのAuroraとCrunchとMannequinを使用しています。
SK_PrototypeMのメッシュの中のSkeltal MeshのPost Process Anim Bluprintには何も設定しないで良いのでしょうか?
YES。
CharSelectWidgetの内容が不足していたというご指摘いただき有難うございます。
添付いただいた画像を参考に修正してみましたが、私のほうが失敗してしまっているようです。
いくつか確認させてください。
①添付いただいた02-characterselect-widgetの方ですが、Set Materialが無くなって、Set Anim Instance Classを追加していただいてるようですが、
Set Materialが無くなってしまうとThirdperson並びにprototypeのキャラクターのマテリアルが変更されずグレーになってしまいます。
なので、SetMaterialはSet Anim Instance Classの後に接続した状態にしています。
添付いただいた02-characterselect-widgetだと、SetMaterialがなくてもマテリアルは変更されるのですよね?
②ThirdPersoncharacterのConstructionScriptの追加ですが、
添付いただいた画像だと、Cast To GI_CharacterSelectというノードがありますが、これは私の作成しているCharaSelelctGMと同じものですか?それともCharGameinstanceと同じですか?
接続できない箇所があるので、画像添付いたします。
③ProtoCharacterはTポーズのままになっている状態ですが、Set Anim Instance Classでアニメーションブループリントのクラスを指定してみましたが、プレイして確認するとTの状態のままでした。
ThirdPersonCharacterのThirdPersonAnimBPを、Animブループリントとリターゲットを複製し、ProtoType様に作成して名前を変更しています。
画像添付いたします。
02-characterselect-widgetの方ですが、Set Materialが無くなって
これは自分がテストで使ったスケルタルメッシュががAuroraとCrunchというものであり、これには既にマテリアルがセットアップされているスケルタルメッシュなのでSet Materialノードを省いても問題なく動作していました。
なので、SetMaterialはSet Anim Instance Classの後に接続した状態にしています。
正しいと思います。
Cast To GI_CharacterSelectというノードがありますが、これは私の作成しているCharaSelelctGMと同じものですか?それともCharGameinstanceと同じですか?
CharGameinstanceと同じです。GI_CharacterSelectのGIはGameInstanceの単語の頭を取ったものです。
Set Anim Instance Classでアニメーションブループリントのクラスを指定してみましたが、プレイして確認するとTの状態のままでした。
ブループリントを見てみました。chara3ボタンを押した場合の処理でSet Skeletal MeshでSK_PrototypeMをセットされていますが、その後のSet Anim Instance ClassでSK_Mannequin用のThird Person Anim BPをセットしていますが、正しくはProtoCharacters_AnimBPだと思います。
恐らくここでOutputLogに「Third Person Anim BPは、このスケルタルメッシュと互換性がありません」的な警告メッセージが表示されていると思います。
返信が遅くなりました、すみません。
>ブループリントを見てみました。chara3ボタンを押した場合の処理でSet Skeletal MeshでSK_PrototypeMをセットされていますが、その後のSet Anim Instance ClassでSK_Mannequin用のThird Person Anim BPをセットしていますが、正しくはProtoCharacters_AnimBPだと思います。 恐らくここでOutputLogに「Third Person Anim BPは、このスケルタルメッシュと互換性がありません」的な警告メッセージが表示されていると思います。
ご指摘いただいた箇所を修正してみました。
Tポーズが変更されました