【UE4】UE4でシンプルな音ゲーを作ろう:その3
この記事は、「ひとりUE4 Advent Calendar 2017」の12/5担当記事です。
qiita.com
(あくまでも音ゲーとしての実装は自己流のものですので、
実際はもっと効率のいい組み方があったりすることもあると思いますが、
そういう場合は是非ブログ等でその技術をシェアしていただけるととても助かりますので
何卒よろしくお願いします……)
*第3回、いよいよ譜面が動く時。
というわけで前回の続きです。
※前回の記事に訂正点がありましたので、まだ確認してない方は前回の記事を再度確認して下さい。
シーケンスラインが出来た、
譜面も配置できた、
となれば次は、譜面を流してみるところからですね。
譜面が流れるようにする、と言っても、前回の記事を見れば分かる通り、
今回は「シーケンスラインActorそのものが移動することで、その子供になっているオブジェも揃って移動する」という仕組みにしています。
ですので、やるべきことは「シーケンスラインを動かす」ということですね。
現在、シーケンスラインはこのような構成になっていました。
ということはScene1を動かせば、その下にあるNoteたちは全て動いてくれます。
曲が始まったかどうかを判断するIsPlayingというbool型変数を用意して、組んでみるとこうなります。
BaseVelocityは前回も出てきた基本秒速です。
これにDeltaSecondsと-1をかけているので、Scene1とそこにひっついたオブジェたちは秒間(-基本秒速)だけX方向に移動します。
もちろん、プレイ中かどうかを示すフラグが出来た以上は、
曲開始時の処理もお忘れなく。
これで、何らかのボタンで6レーン分のStartSongを呼び出してやることで、
t.co譜面が流れるようになりました~~L( ^ω^ )┘♪└( ^ω^ )」♪ いい感じに譜面が流れてて嬉しいですな まだまだ譜面をみやすくしたりする必要がありますが、次はいよいよ入力の受付ですね~ #UE4 #UE4Study #indiedev #土日で音ゲー作ろう pic.twitter.com/KzqCY1x05r
— D.Ohnuma@冬コミ準備中 (@dfk_ohnuma) July 29, 2017
このように、奥から手前まで譜面が流れてくるようになりました。
それでは次に、プレイヤーが入力する部分を作ります。
入力はキーバインドで
まずはインプット用のBPを作ります。
これを使って……
まず全てのシーケンスラインを取得して、配列SeqLineへ入れます。
6つのシーケンスラインにそれぞれ「Line1~Line6」みたいな感じでタグを付けておいて、それを引っ張ってきています。
そうすることで順番通りに配列に突っ込めるはずです。
次に入力ですが、今回は直接キー入力イベントを作るのではなく、
「キーバインド」を使ってみましょう。
キーバインドは、「Aキー」とか「ゲームパッドAボタン」とかのキー入力イベントの代わりに、
「攻撃ボタン」などの自由な名前で入力イベントを作り、それに対応するキーを登録することで、
「AキーかゲームパッドAボタンで攻撃」という場合に「攻撃ボタン」イベントだけで処理を作ることが出来たりする便利な機能です。
こうして書いていてもよくわからないと思うので、コチラをご覧ください。
「プロジェクト設定→インプット」で出てきます。
ここの「アクションマッピング」を開いて
このように好きな名前のインプットイベントと、
それに対応させるキーの登録を行います。
こうすることで、ブループリントの中で
先程登録したキーバインド用のインプットイベントを生成することが出来るようになります。
これを使うことで、キーボードでもゲームパッドでも同じイベントを呼べるようになりますし、
何かの事情があって攻撃ボタンなどに割り振るボタンが変更されたとしても、
BP上では攻撃ボタンのイベントはそのままにしておけるのです。
というわけでそれぞれのラインへ入力通知を送る用に組みました。
ここにある「PushKey」「ReleaseKey」イベントは、
シーケンスラインのアクタの中に作ったカスタムイベントです。
ここから判定のシステムを作っていくわけですが、
今日の部は一旦ここでおしまいです。