Unity備忘録9頁目「様々な入力2」

江上宿六です。

 

マウスやキーボードの入力は前回のでだいたい良いと思うんですが、

まだジョイスティックという大事な入力装置についての情報が残ってまして。

現在進行形で勉強中、ガチの備忘録というわけでもあります。

 

実はジョイスティックのボタン入力については前回やったGetKey~で普通に

取得出来ちゃいます。 ですがスティックに関してはちょっと違う方法で

入力を取得する必要があるのがわかりました。 それをやるためにまずは

こんなものを作ってみました。

f:id:y6yegami:20180713142352p:plain

C#Scriptを追加、CubeController2と命名してこんな感じに入力しました。

簡単に説明をすると左矢印を押すとCubeが左に動き、右を押すと右、

上下なら上下に動くという感じのものです、カメラから見ての動きなので

書き方や値に一貫性がありませんがそこはお許しを。

f:id:y6yegami:20180713142936p:plain

ともかくまぁ、キーボードの矢印でこういう感じの動きをしてくれると思います。

これをスティックで再現するためにはInput.GetAxisというのを使います。

f:id:y6yegami:20180713144418p:plain

Input.GetAxisは軸の傾きを-1.0f~1.0fの値で受け取ることが出来るもので、

x方向はHorizontal、y方向はVerticalという名前を渡してやる事で取得出来ます。

実行すると殆ど同様に動く上に、ちゃんとスティックでも動いてくれるハズです。

 

でもなんか釈然とはしませんよね、なんでそうなるかよく分かってないからです。

このHorizontalとかVerticalというのが何処から来てるのかもアレですからね。

 

ではメニューバーのEditからProjectSetting→Inputと選択してください。

インスペクターにInputManagerというのが表示されました。 Axisの項目を

開いてみてください。

f:id:y6yegami:20180713145522p:plain

ここです。 さっきのHorizontalとVerticalはここにあるやつの事なんですね。

2個あるのはさておき、とりあえずHorizontalの所を開いて中を見てみましょう。

f:id:y6yegami:20180713172715p:plain

項目が多くて嫌になりますが、ここではName、NegativeButton、PositiveButton、

同様にAltがついたNegativeButton、PositiveButton、Typeなんかを押さえれば

今のところはなんとかなると思います。

 

まずNameなんですが、言うまでも無く名前ですね。 上のスクリプトの所で

Input.GetAxis("Horizontal")としていますが、このタイミングでこの中身を

チェックしているという感じなのでしょうか。 名前を変えたら呼び出す方でも

名前を変えれば多分同様に動いてくれると思います。

 

NegativeButton、PositiveButtonは何のキーを押したら軸が負の方向に振れるか、

正の方向に振れるかというのを表しているんだと思います。 Altがついてるのは

代替のキーで、多分同じ処理が行われるハズです。

 

つまり書かれている通りだと、leftを押すと負に、rightを押すと正に振れる、

またはaを押すと負、dを押すと正という感じになるのであろうと思います。

現に実行してみるとaとdでも左右に動いてくれますからね。

 

Verticalの中身も一応確認してみると、down,sで負、up,wで正になっています。

そういう風に軸が傾くんだなあ、という風になんとなく覚えていただければ。

 

ここのTypeなんですが、KeyOrMouseButton、MouseMovement、JoystickAxisと

また色々とありますが、とりあえずさっき開いた方ではないもう一つの

Horizontalを開いてみてください。

f:id:y6yegami:20180713175740p:plain

えらいすっきりしてますが、TypeがJoystickAxisになっています。 Typeの下の

AxisはXaxisです。 Verticalの方を開くとTypeはJoystickAxisでAxisはYaxisです。

 

まぁ、どういう事かというとこのTypeをJoystickAxisにするとスティックの

傾きが取得出来るというもので、AxisがXaxisなら横方向、Yaxisなら縦方向の

傾きを取得出来るという感じだと思います。

 

それでまぁ、このInputManagerのここらの名前をGetAxisに渡してやると

それぞれ状態、傾きを取得してくれて扱えるという事になる感じですかね。

 

ここまでやってきたのは左スティックの入力でしたが、じゃあ右スティックは

どうすれば良いのかというと、Axisの所を3rdやら4thに変える事で取得が

出来たりしますが、これはジョイスティックのボタンの並びと同様で、

ジョイスティックによって違うので、そこは気をつけないといけないですね。

 

自分が使っているWiiプロコンを繋いだものはでは3rdが右スティックX、4thがY。

5thが十字キーX、6thが十字キーYという感じでした。 4thのY軸は正と負が

逆転していたのが謎でしたが、Invertにチェックを入れると逆方向にできます。

 

という事で今回はこんな感じです。 文字数が2000超えてますが、これは

横文字が多いせいで、そこまで冗長な感じにはなっていないと思います。

 

次回はオブジェクトの自動生成とかそういう辺りをやるかもしれないです。