敵から攻撃を受けた時にプレイヤーのライフが減りません。戦闘時に別レベルに移動します。そのレベルブループリントです。
プレイヤーの死を知らせるためのBPです。
戦闘時のダメージ計算もしっかり作動していて敵のライフバーもしっかり減ります。printstringも表示するのですが、プレイヤーUI部分のライフバーは全く減らず、printstringの「Dead」が表示されます。。。しかし、プレイヤーUIのライフをキーボードのCキーで1づつ減らす処理をFirstPersonBPで組んでみたところ、しっかりとライフバーが減りました。何故敵の攻撃では減らないのでしょうか、わからない。。。
添付されている画像に、
問題となっている「プレイヤーのダメージを受けた際のHPを減らす処理」が載っていないため
実際にダメージを受けた後に「Health R」の変数を減算しているのか確認できないため、返答が難しいです。
念のため、ダメージを受けた際に「Health」を減らす処理の参考URLは下記となりますのでご確認ください。
https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/Events/index.html#eventanydamage
また「ue4_16.jpg 」を確認すると「Add to Viewport 」をされていないようなので
されているか確認をしてみると良いかもしれません。
ダメージ処理はカスタムイベントのようなので動作しているかはちょっと分かりかねるのですが、下記のスライドの57ページのようにUIが変数をチェックする処理は入れていますでしょうか?(UIがUMGを使用している場合、スライド56ページ目でプログレスバーにバインドし57ページめでバインドした処理の説明です)
Cキーを押すとプログレスバーの変数が減る処理を入れたところ、ちゃんとプログレスバーが減ったのでUI部分は問題ないと思います。不備が多くてすいません。ダメージ処理の部分です。
状況の整理をしますと
- CキーでのプレイヤーHP減らす処理はUIも問題なく動作する
- 敵はダメージを受けたらUIも問題なく動作する
- プレイヤーのみダメージ処理を受けた際にUIが動作せずDeadしない
ということだと思うのですが、上記を考えると、怪しいのは「プレイヤーへのダメージ処理」かなと思います。
「ue4_19.jpg 」にある「LGTurn(プレイヤーのダメージ処理)」も「ue4_20.jpg 」を見ると呼んでいるようなので、今画像に出していただいている部分を見るだけだと、ちょっとバグの部分が思いつかないです。
Cキーで追加した処理は、プレイヤーのダメージを実際に受ける処理は同じなのかと、
プレイヤーがダメージを受けた時のブループリントの流れをちゃんと動作しているか
確認してみてください。
下記はデバッグの方法のドキュメントでブレークポイントを「プレイヤーHPを減らす処理」に置いて動作しているか、確認してみてください。
https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/UserGuide/Debugging/index.html
(プロジェクトを渡してもらい、見せてもらえるのが一番早かったりはします)
返信が遅くなってしまいすいません。
デバッグしていくとよくわからない現象が色々と発見されました。
1.Simulateでプレイしたところ、ちゃんとUIも作動してくれました。
2.FirstPersonCharacter内のBPでCキーを押すと体力が減算される処理について。
・戦闘用レベルではPrintstring[Dead]が表示されるが、そのPrintStringにブレークポイントを置いたところ、そのブレークポイントは作動せず。BluePrintDebugでも
Printstringは表示されず。
・移動用レベルではPrintstring[Dead]が表示され、ブレークポイントも反応。 BluePintDebugにも表示されました。
3.Battle_UI(ウィジットブループリント)内の戦闘処理による減算について。
・戦闘用レベルではPrintString[Dead]が表示され、ブレークポイントも反応。BluePrintDebugにも表示されました。
・移動用レベルでは未検証。
ごちゃごちゃな文章ですいません。回答よろしくお願いします。
返信が遅くなってしまいすいません。 デバッグしていくとよくわからない現象が色々と発見されました。
1.Simulateでプレイしたところ、ちゃんとUIも作動してくれました。
2.FirstPersonCharacter内のBPでCキーを押すと体力が減算される処理について。
・戦闘用レベルではPrintstring[Dead]が表示されるが、そのPrintStringにブレークポイントを置いたところ、そのブレークポイントは作動せず。BluePrintDebugでも Printstringは表示されず。
・移動用レベルではPrintstring[Dead]が表示され、ブレークポイントも反応。 BluePintDebugにも表示されました。
3.Battle_UI(ウィジットブループリント)内の戦闘処理による減算について。
・戦闘用レベルではPrintString[Dead]が表示され、ブレークポイントも反応。BluePrintDebugにも表示されました。
・移動用レベルでは未検証。 ごちゃごちゃな文章ですいません。回答よろしくお願いします。
すいません。改行がわからず変な感じになっちゃいました。。。
1.Simulateでプレイしたところ、ちゃんとUIも作動してくれました
Simulateはあくまで機能のテスト的なものですが、動作自体はしているとのことでBPは動いているようですね。
2.FirstPersonCharacter内のBPでCキーを押すと体力が減算される処理について。
「戦闘用レベル」「移動用レベル」というものが、この質疑で定義されていない単語のためわからないのですが
レベルBPによって動作が違うようなので、レベルBPで作成している処理が問題があるのかもしれません。
3.Battle_UI(ウィジットブループリント)内の戦闘処理による減算について。
UMG内の処理は問題ないようですね。
1〜3の判断材料から考えますと、レベルBPの処理が問題あるのかなと思います。
新しく作りなおしてみた「戦闘用レベルのレベルブループリント」です。仕様が変わった部分はないと思います。この画像でおかしな部分はありますでしょうか?
今回の件とは違う指摘になるかもしれませんが「Add to Viewport 」が一箇所で行おうとしているので、整理のために「Create Widget」を行ったら「Add to Viewport 」を行う、というようにペアで処理するようにしてみてはいかがでしょうか。
https://docs.unrealengine.com/latest/JPN/Engine/UMG/UserGuide/CreatingWidgets/index.html
やりました!!やりました!!!理由はわかりませんが、CreateWidgetのあとにAdd to Viewportを各々置いてやると成功しました。大成功です。ありがとうございました。