マリオ風アクション「超玉ねぎBros.」今回はクリボーとの戦い、ブロック越しに間接攻撃の追加です
レンガブロックを叩いたら上の敵に攻撃
レンガブロックBP_Brickを編集します
ブロックの下につけた叩くようのコリジョンとの重なりイベントです
ブロックが跳ねるか壊れるかの処理分岐があります
そのどちらのパターンでも上の敵キャラに攻撃したいので、分岐する手前に攻撃の処理を追加します
ここに直接処理を追加するのではなく、カスタムイベント化しておこうと思います
(さきにAddCustomEventをつくってから参照ノードを出して繋ぎます)
名前は「Enemy Attack 敵攻撃」とでもしておきます
敵への攻撃か、敵からの攻撃かわかりにくい気もします
もっとわかりやすい名前にしてください
呼び出し側は準備OKです
では攻撃する処理を作っていきます
SphereTraceで上にいる敵を検出して、「ヒットするものがあればダメージを与える」処理でいいかなと
ブロックの上を2体通過中の可能性があるので単体ではなくマルチバージョンにしておきます
Get Actor Locationでブロック自体の位置を取得して
これを上に少しずらしてブロックの上に載っているものを検出します
探すのはブロックのすぐ上のものだけでいいので、開始と終了は同じでよいです
半径や上にずらす量は適当であとでデバッグで確認しましょう
検出した後は For Each ですべてに対してApplyDamageで攻撃するだけでよいかと思います
ElementはまだアクターではないのでBreak***で分解してアクターを取り出します
クリボー側のダメージ処理はそのままでいいはずです
では動作確認ですが、攻撃範囲が広すぎました
直径のつもりで半径100にしちゃってますね
中心点も少し低すぎるかもしれません(のちほど問題発覚)
とりあえず位置はそのままで半径は50にしておきます
では処理を整理して、ハテナと10コインにもコピペしておきます
コピペが多くなってきたので共通化を考える時期かなと
スーパー玉ねぎちゃんでもちゃんと攻撃できました
参照エラーのデバッグ
スピードがでるやや高いステージ上のブロックで実験するとエラーとなりました。
埋もれたのではなくてやられちゃったようです
(キャラクターがいなくなったと怒られています)
これは敵への攻撃のつもりが、ブロックに重なった玉ねぎちゃん自身にも攻撃がヒットしているようです
ブロックの中まで探索してくれる必要はないので上にずらしつつ半径も小さくしてみます
ちょっと上過ぎる気もしますが一応対策にはなってそうです
同じなので割愛しますが、他のブロックも同様の変更をしておきました
つづく
今回は以上です
コメント