妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

キー入力イベントを直接使わない理由

f:id:una_unagi:20150710170915p:plain

妹「プロジェクト設定に、Jumpキーのマッピング? というのがあるけど、これって何の意味があるの?」

「意味と言われてましても」

妹「だってさ、WキーがJumpキーに設定されてても、結局ジャンプするブループリントを書かないと、飛ばないわけでしょ? それってKeyboard Eventsで、Wキーのイベント作ってジャンプさせても一緒じゃないの? わざわざAction Eventsで作る意味がないような」

「そういう話か。確かにJumpとか書いてあるのは単に名前だけの話で意味はないし、入力イベントを直接つかってもいいんだけど、使った方が便利なんだよ。キー設定のコンフィグ作る時にもその方が都合がいい。自分でカスタムイベントとして作るよりも簡単だし」

妹「たしかに複数のキーが設定出来るのは便利だと思った。便利だというだけで、使わなきゃいけないものではないのか」

「そうそう。別にそれやらなくても動く。ゲームパッドとキーボードとか、両方の入力イベントをブループリントでいちいち書くの大変だから、UE4以外でも似たような仕組みで動かすことが多いんだよ」

妹「じゃあ逆にキー入力イベントの方が要らないのでは?」

「アクションゲームの操作ならね。でもキーワード入力画面みたいなのを作る時には各キー入力イベント使うこともある。入力設定にAのマッピングを追加して、Aキーを割り当てる……っていうのは無駄だから」

妹「無駄なの?」

「なんというか、Aを入力したくてAのキーを入力するなら、操作の意味と実際の操作が同じだから、分離してもわかりやすくはならないんだよ。あと別のキーに割り当てたくなる場面も想像できない。ただ文字が打ちづらくなるだけ」

妹「じゃあ、えび天拾ったりするボタンは、今はEキーのイベントで作ってるんだけど、拾うっていうマッピングを追加して、そこにEキーを割り当てた方がいいのかな?」

「それはした方がいいね。パッド操作にも今はそれ書いてる場所が1箇所だから後回しでもいいけど、少なくともそのキーイベントのブループリントを2回以上書く前にやった方がいい」

妹「ふむふむ。それはActionとAxisどっちに追加するの?」

「Actionの方。Axisでも動きはするけど、Axisっていうのは基本的にアナログスティック用で、傾き具合を受け取るための物だから。押したのと離したのだけわかればいいのはAction。別にアクションするボタンでなくともOK」

妹「横移動のAとDがAxisの方に入ってるのは?」

「1つはゲームパッドでの操作をする場合があるからそれに合わせてるってことで、もう1つは左右のイベントを1つにまとめられるってのがある。Actionだとマッピングが2つ要るけど、Axisなら傾きがプラスかマイナスかで方向を区別出来る」

妹「それでスケールが-1.0とかいうのがあるのか。あ、これ同時に押したらどうなるの? 左と右とか、右のボタンを2つ押すと2倍速とか?」

「左と右を押すと、プラスとマイナスで相殺されて、傾き0のイベントになる。左右それぞれの一番大きい傾きで計算するから、同じ方向を2つ押しても2倍にはならない。このへんもキーマッピングで処理する事の利点」

妹「わりと適当に設定しても、適当に動く感じなのかな」

「Dキーで右に移動しながら、ゲームパッドで左に少し傾けると、ゆっくり右に動くけど……まあそれで困るような事はないだろうね。困るんだったらゆっくり動かせる機能の方をなくすべきだし」

妹「ゆっくり動く機能をなくす?」

「インプットイベントのAxis Valueの値は、通常-1.0から1.0の範囲の小数だけど、例えば絶対値が0.3以上なら1、それ以下なら0みたいに、0と1で完全に分けてしまう。そうするとパッドでも移動速度が均一になるよ」

妹「やっぱり難しい……」

「一応調整しとかないと、パッドで操作すると簡単だけど、キーボードだと絶対クリア出来ないみたいなのはまずいから」

妹「他になにか注意点はあるのか?」

「色々あるんだけど、長くなりそうだから明日。明日でも終わらないかも……」