猿神大学

数学についてあまり書きません。

ユニティちゃんをゲームパッドによって動かす

前回までのあらすじ

データ大学附属高校の精密な『データ・ドッジボールに苦しめられていたドッジ高校。

一時は内野が残り2人という圧倒的ピンチに陥ってしまう。

しかし、ドッジ高校のキャプテン・ドッジ田の諦めないプレーが、データ大学附属高校の計算を徐々に狂わし始める…

 

 

 

 

 

 

 

は?

 

 

 

 

 

 

 

はじめまして、三角関数ちゃそです。

 

「はじめまして」ということで先のあらすじがあたかも第三者の書いたもののように見せるテクニックです。

 

効き目はないです。

 

 癌にムヒぐらい効き目ないです。

 

というわけで、今回は前回の記事の続きです。

 

 

sarugami-univ.hatenablog.com

 

前回は、Unityを使って2Dゲームを作っていたときに、急に人肌恋しくなり3D女の子を動かしたくなるといった何とも残念な思考回路を披露したところでした。

感慨深いですね。

 

「感慨深いですね」と付け加えるだけで、あたかもいい話に見えるテクニックです。

 

効き目はないです。

 

ドサイドンに10万ボルトくらい効き目ないです。

 

 

はい。

 

で、3Dの女の子をゲームコントローラーで動かすとは言ったものの、そもそも3Dの女の子の素体みたいなのが入手できるかどうかですよね。

 

どうでもいいですけど、素体ってエロいですね。

すっぴんボディですもんね。

 

で、そんな素体が無料で手に入るのか?素体が無料ってやばくないか?という話になるのですが、なんと、Unityでは「ユニティちゃん」名乗る女の子の3D素体を無料で入手することができます。

うれしい。

 

unity-chan.com

 

ということで、本日はこちらを利用していこうといった記事になっています。

一応ライセンスは貼っておこうと思います。

f:id:sarugami_univ:20210124151847p:plain

この記事はユニティちゃんライセンス条項の元に提供されています。

unity-chan.com

 

はい。

こちらのユニティちゃんですが、キャラクター設定などもしっかりしており、世界観を強く有するキャラクターのように見受けられます。

たぶんファンも多いでしょう。

そんなキャラクターをブログに登場させながら

 

「素体が無料…ふひひ…」

 

みたいなテンションで記事を書くのは、いろいろ終わりそうなので、今回はピシッと執筆しようと思います。

とりあえず襟付きのシャツを着ました。ピシッとね。

 

ユニティちゃんを動かす(1月中旬)

  • モチベーション
  1. Unityに慣れる(2Dゲームに引き続き)
  2. Unityでゲームパッドの入力を取得する(2Dゲームに引き続き)
  3. ユニティちゃんを愛でる(究極的な目標)

 

今回は、こちらの記事を参考にしています。

xr-hub.com

 

 

こちらの記事では、キーボード入力による動作確認を行っていますが、僕のモチベーションはゲームパッド入力なので、そのあたりを別途補完すれば、完全な写経とはならずにいい感じで勉強できそうですね。

 

具体的には、参考元のPlayerMove.csとAttack.csのGetKeyDownの箇所について、何かしらの形でゲームパッドからの入力に変更すればよさげ。

 

で、ゲームパッドからの入力をどうするかですが、下記の記事を参考に実装を進めました。

hakonebox.hatenablog.com

 

ただ、

GetKeyDown("joystick button 0")

みたいな感じで書いても「どのボタンを押したときの動作やねん」って感じでよくわからないので、

  • Unity側のInputManagerを適宜わかりやすい名前に設定する
  • GamePadのボタンと入力のキー名称をマッピングしたようなUtilsクラスを実装する

のどちらかは行うべきな気がします。自分は後者をとりました。

 

というわけでコードを載せるのですが、はてなブログの見たまま記法ってコードを載せられないんですね。ここまで書いて編集モードを変更するのもなんか気が乗らないので、スクショで勘弁。

 

f:id:sarugami_univ:20210124172747j:plain

Aボタンと左スティックの実装

というわけで、愚直ですがこんな感じでマッピングします。

ほかのボタンも同様に実装します。

 

これを一個作っておけば、以降のゲームパッド入力の際にも流用できそう?って思ったんですけど、InputManagerでなくInputSystemを使ってみるのもありなのかもしれません。これは読者の課題としたい(突然の数学書

gametukurikata.com

 

 

こんな感じでゲームパッドからの入力を受け付けるクラスを利用して、ユニティちゃんを動かしてみました。

 

f:id:sarugami_univ:20210124162523g:plain

スティックに反応して走るユニティちゃん(かわいい)

f:id:sarugami_univ:20210124162705g:plain

ボタンに合わせて動作するユニティちゃん(かわいい)

f:id:sarugami_univ:20210124175512j:plain

またしても何も知らない大泉洋さん(23)

やったこととしては、先述の2つの記事より

  • ユニティちゃんをキーで動作させていた箇所をゲームパッドに切り替える 

だけなのですが、実際に動かしてみるとゲームパッドの独特の操作性も相まって達成感がありますね。やりがい大事。

 

パンチラがなくて遺憾の意ですが

 

すみません、シャツの襟が取れました。

ごめんなさい。根はいいやつなんです。許してください。 

 

ちなみに、当たり判定云々は実装していないです。

ユニティちゃんが怪我でもしたらどうするんだ!!

 

というわけで、第3のモチベーション「ユニティちゃんを愛でる」も大達成ですね(目的意識が一貫している点は褒めてほしい)

 

今後は

  • アニメーション動作を増やす
  • アニメーションの素体パーツを作ってみる

といった方面に課題を膨らませることができそうですが、いずれも現状の僕の技術力だと無理そうなので、妄想で補完しようと思います。

 

ふひひ…課題が膨らむぜ…

 

はい。

以上が、1月中旬にやってみたことでした。

 

Unityに手を出してみて、

  • 0から物を作るのはめちゃくちゃしんどい。(2Dゲームより)
  • 素材があれば結構楽しく物が作れる。素材が充実している。(Unityちゃんより)
  • (仕事ではないので、)クオリティにゴールがないため、ある程度「これを作りたい」が達成できたら、潔く手を引くのがいいかもしれない。(両方より)

といった感じのことを学べた気がします。

 

まあ、Unityに限定してという話でもなく、他の技術や研究にも言えることだと思うのですが、改めて。

 

というわけで、Unityからはいったん手を引いて、再度Webアプリケーションに戻ります。

 

続きます。