UE4でポーンから弾を発射するための機能を追加しようと試していたのですが
スクリーンショットの一番上のイベントビギニングプレイはアクターのスポーンまで実行されるですが
下のTabによるインプットアクションのイベントとZキーを入力したとき、プリントストリングまでは実行されるのですが、アクターのスポーンが実行されません
プリントストリングが実行されているという事はイベントから命令がスタートしている事になるのですが、アクターのスポーンまで命令が実行されないのか解りません、解決方法がありましたら回答をお願いします。
2Mに抑えるため画像は荒くなっていますが、GIFによる動画を投稿します。
自機の縦軸と右上の文字に注目してください、最初シーンは文字も出現して自機縦軸に沿って動くアクターが出現していますが、画面が切り替わったシーンでは、右上に文字が出現しますが自機の縦軸にアクターは出現していません。
何をもって実行されてないと判断したのでしょうか?
コードを見る限り間違いなくスポーン処理が実行されています
(意図した結果とは異なっている可能性はありますが)
一番上のイベントビギニングプレイでは プリントストリング(hello01)の文字が表示され、対象のアクターがスポーンして指定した方向に移動するのが確認できるのですが。(イベントティックでは連続してアクターがスポーンして移動するのを確認しています)
インプットアクションとZボタンの入力ではそれぞれのプリントストリングの文字(hello02、hello03)は画面に表示されるのですがアクターは出現しません
ポーンで外部入力からのイベントを有効にするための準備が足りないのでしたら、プリントストリングの文字も出力されないとは思うので、どういう理由なのかもわからない状況です。
ここのコードだけだと本当にここのPrintStringが実行されているのであれば後続のSpawnノードも実行されています。
ブレークポイントを張ってちゃんと処理が来ていてSpawnノードも処理が来ているか確認してみてください
ブレークポイントですね解りました確認してみます。
ブレークポイントを張ったところ、ボタンを押した後の処理はスポーンアクターまで来ている様ですがやはりアクターのスポーンまでは確認できませんでした。
もうすこし解りやすい様に、追加でGifを用意して投稿しようと思います、投稿制限の2Gに収まらなかった場合はまた追って報告します。
であればやはりSpawn処理は走っているということです。
ただ何かしらの原因で失敗しているか(Spawn処理のReturnValueをチェックすれば確認可能です)
スポーンできているが想定外の挙動でスポーンされていないと勘違いしているかのどちらかが予想されます
SpawnしたActorのBeginPlayにPrintStringをつなげてスポーンに成功したら文字列を出力するようにすればSpawnが出来ているかどうかはわかるのではないでしょうか?
度々のメッセージありがとうございます。
早速チェックしてみます。
色々と弄っていて気が付いて、アクターに設定していたインターバル ライフ スパンの設定を0にしてみると、アクターがアウトライナの一覧に表示されるのが解りました(最初はライフ スパンを設定していたのでアウトライナから消えていて確認できなかった)
そしてどこにスポーンしたのか確認したらはるか上空に、どうもかなり真上にスポーンしてからさらに上に移動していることが解りました。
こうなると、出現しないという問題は解決できましたが、なぜ外部入力のイベントでスポーンさせた時はそんな変な位置にスポーンし思ってもない方向に前進するのか余計に解らなくなっています。
さらに解ったことがあります、どうやら自機に設定した円錐のポーンが上空にスポーンしているのを確認しました
キー入力のアクターはそこからスポーンしていることが解りました
しかし ポーンをスポーンさせるようなブループリンとは組んでないはずなのですが・・・ とにかく、ポーンが何故出現するのかを解明しようと思います。
色々とチェックして悪さをしていると思われるのが、カメラの位置を変更及び固定化させるために用意した、set view target with blendとそれに接続しているGetPlayerController (数字は0に設定しています)ぐらいでしょうか、もしこれが原因だとしても、なぜこれが悪さをしているのかは皆目見当がつきません
どういうコードを組んでいてどういった挙動が正しいのかこちらではわかりかねますので
何かおかしいと思ったときは思い込まないように一つ一つ機能を切り分けてデバッグすることで原因を追究しやすいです。
スポーン位置がおかしいのであればスポーン時にArrowのGetWorldLocationの位置をPrintStringしてやればArrowが(そしてスポーン想定の位置が)どんな位置にいるのかがわかると思います
ありがとうございます。 早速チェックしてみます。
早朝にチェックをして大体の原因が解りました、プロジェクト設定の プロジェクト > マップ&モード の中のデフォルトのゲームモードを自分で用意したゲームモードのブループリントに切り替えて、さらにデフォルトのポーンクラスを自機のブループリントに切り替えると発生(2体目の自機が出現)する事が解りました。
ただこのデフォルトのポーン設定を自機用に用意したブループリントではなく、デフォルトに戻すと、自機のキーボードなどによる外部入力のイベントが無効になってしまいます。
この辺り詳細を調べようとしたのですが、現状検索では詳細を見つける事が叶っていませんので、どうしたら良いのか頓挫している状況です。
やりたいことは複数のActorで入力イベントを受け付けたいということでしょうか?
一つのActorで受け付けるのであればゲームモードの設定でスポーンするようにして自身で配置したActorを消せばよいと思います。
最終的に何がしたいかから逆算して必要な作業を決めていくことが大事です
自分としては勉強の一環として簡単な縦スクロールシューティングを作ってみようとしていて、今回やっているのは自機の操作関係のプログラムを作成(何かボタンを押したら弾を撃つを作っていたところ)していたところです。(投稿したGIFでは敵のサンプルなども動いています)
いくつか他にもプログラムは作っていて、ある程度はUE4のブループリントが解ってきたかな?と感じ始めた矢先にこのトラブルです。
色々な資料や動画を参考にして作っていますが、ここは不要ではと思った部分は削っています(プロジェクトを作った時にデフォルトで置かれているポーンなど)
今自分でここが解れば解決できるのではとい思っている部分は、プログラムをスタートした時にアウトライナーに追加表示される色々な物(プレイヤーコントローラーなど)がどういう経緯で追加されるのかです。
この部分は現在進行形で色々と調べていますが、未だに解る答えは見つかっていません、とにかく解決のために引き続き調べは続けてみようと思います。
回答1件
あなたの回答
tips
プレビュー