2015年4月23日木曜日

UE4で習作ゲームを作り始めたよ #13 (体当たり攻撃)

プレイヤーのキューブが、敵に反撃できるようになりました。
ほんのちょっとだけ、バンパーで反射した時の一瞬だけですが。
その瞬間、赤色に変わります。


UE4のBlueprintでゲームを作り始めて1〜2ヶ月程度でしょうか?
まだまだ分からないことが多いのは当然ですが、何よりもまず今感じてるのは、自分自身がBlueprintならではのコーディング(@aizen76氏言うところのノーディング)、及び、開発手法が体得できていないことです。新しく始める事につきものの、初期のジレンマとでも申しましょうか。

C/C++などの手法に慣れていて、そのままの手法でBlueprintでノーディングしようとすると、どうしても見通しが悪いというか、助長性を感じるところが出てきてしまい、なかなか先に進まないというのが、基本的なパターンとしてあると思います。

そこでちょっと無理矢理にでも、Blueprint(ビジュアルスクリプティング)の特徴的な機能、Delay、Retriggerable Delay 、Timelineを使ってみました。


今回、プレイヤーがバンパーに反射された時に、一定時間だけ敵を吹き飛ばせるというルールを追加しました。その攻撃可能時間を管理する方法を例としますと、僕が最初に考えたのは、攻撃可能時間変数を用意して、これをTickイベントで減算していき、これが1以上なら攻撃可能とするものでした。
しかし、こういった処理をBlueprintでノーディングするのは、特に難しくはないのですが、面倒くさいと感じました。カウンターが少ないならまだしも、ゲームが複雑になるに従って、こういった細かな計算処理をTickイベントの頭に持ってくるのは、なんとなく古臭さも感じました。これならC++などでコーディングする方が、よっぽど書きやすいしスッキリします。

そこで、攻撃可能フラグをONにした後、Retriggerable Delayを使い、一定時間後にこのフラグをOFFするようにしました。

RetriggerableDelay.png

他愛のない処理ですが、僕にとっては「おっ!」となった瞬間でした。
これならTickイベントで計算処理をしなくて済みますし、フラグのONとOFFの処理が一箇所にまとまって、見通しが良くなります。
Retriggerable Delayに来ると、ここから先は設定した時間そこで留まりますが、このイベントを呼び出した側へは影響しませんので、メイン処理を留まらせることにはなりませんでした。

ゲームを作っていくうちに問題が出てくる可能性も否めませんが、それ故の習作ゲーム作りなので、とりあえずこの方法で様子を見ていこうと思います。

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...