まずは使い方に慣れるため、色々なサイトを参考に勉強中の初心者です。
現在、あるサイトを参考にインベーダゲームのようなものを作っています。
(勝手にURLを載せてよいのかわからなかったので割愛します)
左クリックした時に弾(アクタ)を射出し、敵や障害物に当たるとdestroyで消えるようにしています。
また、画面から大きく外れた時も消しています。
何度もクリックすると弾がレーザーのように発射されてしまうので、例えば画面内に弾がまだ残っている時は次の弾が射出されないよう、または画面内に3発だけといったように制限をかけたいと考えています。
(将来的にはパラメータで画面内に射出できるプレイヤーの弾の最大数を設定できるようにしたいです)
(もっと言いますとパワーアップアイテムで最大数を増やせるようにしたいです)
まずは射出した弾が何発残っているのかを取得する方法についてご教授いただけますと幸いです。
よろしくお願いします。
PierPop
(Pier Pop)
2
勝手にURLを載せてよいのかわからなかったので割愛します
もしそのURLがインターネット上から一般的にアクセスすることができるものであれば、誰しもが見ることができるものであるので是非記載したほうが良いです。URLにアクセスすることができれば、やりたいことに合わせた詳細なアドバイスをすることもできますし、同じように困っている人の役にもたちます。
まずは射出した弾が何発残っているのかを取得する方法についてご教授いただけますと幸いです。
GetAllActorsOfClassのノードを使用することでレベル上にある全てのアクターを取得できます。
ただし、レベル上にある弾数を確認する方法だと、毎フレームレベル上の弾数をチェックする必要があるため、処理負荷にもつながるので少し効率が良くない方法かもしれません。添付したブループリントのように、プレイヤは弾数だけを管理して、弾がDestroyする前に弾が消えるイベントを通知する方が良いかと思いますのでご参考下さい。
早々にご回答いただきありがとうございます!
開発環境は自宅なのでまだ試せておりませんが、帰宅後すぐに実践いたします。
私も射出時にカウントアップという案は思いついて実装してみたのですが、弾が消える時にカウントダウンするために、敵に当たったり、画面外に出たり、弾同士相殺されたり・・・などの全ての場所で書かないといけないのがしっくりこずに悩んでましたが、Destroyを検知するイベントを作ってしまうというのは思いつきませんでした。
うまく作れるかわかりませんがとても参考になります。
参考にしたURLについて
Unreal Engine奮闘記様 インベーダーゲームを作る
http://unrealengine-blog.hatenablog.com/entry/2014/04/24/133055
上記サイトを一通り4.17.1のバージョンで動くところまでこぎつけました。
その後、インベーダーが端まで行くと一段降りるですとか、敵の数が少なくなるとだんだん敵のスピードが上がっていくなどというアレンジを加えて実装しております。
今回質問させていただいたことをやりたいと思い、いろいろ試しては途方に暮れておりました。
上記サイトは現在更新されていないようでしたので、このアンサーハブにて質問させていただきました。
早速実践してみたのですが、私の理解不足で弾側の書き方がよくわかりません。
このサンプルでは基本の弾のクラス=Bullet Blueprintを作成し、プレイヤーの弾=Player Bullet Blueprintと敵の弾=Enemy Bullet Blueprintに継承して作成しています。
Destroyは基本の弾のクラスに書いてますので、敵の弾が消滅する時も影響が出てしまうのかどうか。
スクリーンショットを取りましたので、こういったケースの場合はどこに書くべきかご教授いただけませんでしょうか?
Bullet Blueprint
Player Bullet Blueprint(Bullet Blueprintを継承)
Player Blueprint
Enemy Blueprintは割愛します。
よくよく考えましたらGetAllActorsOfClassですが、レベルブループリントにて敵の数を数えるためにすでに使っていました。
ここでキャストして数えてGameStateに保存して渡すという方法で実装できました。
Level Blueprint
Player Blueprint
今回教えていただいた方法と異なってしまい、処理速度の事を考えるとあまりよくないのかもしれませんが、今回はこれで解決とさせていただきます。
貴重な情報をありがとうございました。とても参考になりました。