しんばりん日記

ue4を使ってのゲーム制作ブログです。間違いを指摘していただけると助かります!

攻撃してみる:魔法作成(11)

散弾作成の続きを行いたいと思います。

が、その前にちょっとしたバグ修正を。

今回はバグ修正のみです

 

現在魔法攻撃ボタンを連打したらモーションこそ通常に戻りましたが、UIがおかしいまま放置していましたので、それを先にちょちょいと修正します。

おかしいというのはゲージが増加し続けることですね。

 

ゲージが増加し続けているので、そのイベントの直前にログを仕込みつつ確認をしてみると、

魔法射出して腕をさげる間に魔法攻撃ボタンを[押す]→[離す]してしまうと正常にフラグがfalseにならず、この現象になってしまうようでした。

うーん、直す場合は...どうしましょう。

 

新たにアニメーションにイベントを仕込んだりするよりかはフラグ追加したほうがよさそうですね。

ようはボタンから離したと言ってるのに値が増加し続けているのが問題なので、インプットイベントにTrue/Falseを入れるフラグを追加します。

f:id:sinvary:20190208012027p:plain

実際の判定処理はこんな感じで。

ノードの先は魔法精製後の処理につながっています。

 

さて、ようやく本題!

今回はスポーン側で散弾するかを判断し、散弾だったらこちら側で複製しようかなと思っています。

といってもforloopで回すだけ、結果的には同じ動きですが、今回はコントローラーに処理を書いているので、

複製する魔法には(実行しないとはいえ)複製する処理が記載されないBPが複製されます。

 

・・・とかいろいろ書いているうちに、別の方法を考えたので、申し訳ありませんが次回にします!

そもそもコントローラーか魔法そのものでスポーン、複製するのではなく、間になにかかませれば楽になりそうなので新しく[MagicController]的なコンポーネントを作成します。

 

働きは

1:プレイヤーコントローラーから「発射位置」「魔法」「レベル」を受け取り、イベントを発行。

そのイベントは「直線型」「散弾型」で別のイベント。

2:受け取ったコンポーネント側で複製するかどうかを判断し、連続スポーン。

しない場合でもスポーン。

 

こうすれば魔法の中身はごちゃごちゃしないで済みますし、コントローラー側も今まで通りきれいな見た目で済みそうです。

スポーンの処理なども全部[MagicController]にまとめられるので、修正などする場合も管理が楽になりそうです。

まぁまだ考えただけなのでちゃんと動くかはわかりませんが。

「直線型」「散弾型」で分けたのは、気分で仕様を変えたい場合すぐに対応できるからですね。

レベルごとなのかコマンドなのかまた別なのか。どれにしてもイベントで発行できればすぐに対応できそうです。

 

まぁこんな感じなのを次回から作りたいですね。

今日はバグ取りだけになっちゃいました...

それでは。また。