feature image

2020年12月19日 | ブログ記事

【AdC36日目】UnityでPCゲームを一瞬でスマホ対応にする

はじめに

みなさん、どうもはじめましての方ははじめまして、そうでない方もはじめまして、19のNです。今回はUnityを使ってWASDで動くようなPCゲームをあっという間にスマホ対応にできる便利な方法をブログにしようと思います。

さっそく本題

まず、Unityを起動して、新規プロジェクトを立ち上げ、PackageManagerからこちらのアセットをインポートしてください。そして、下図のようにAssets/UJoystick/Example/Scene にあるUJoystickというシーンを開いてください。

すると、下図のようなシーンが出てきて、スティックを操作して、ピンク玉を操作することができます。

これはどのように実装されているのでしょうか。Example/Scriptsのbl_ControllerExample.csを見てみましょう。すると、このスティックはbl_Joystickクラスのオブジェクトになっていて、VerticalHorizontalというメンバ変数の値でスティックの入力を受け取っていることがわかります。名前の通り、垂直方向にどれだけ動かされているか、水平方向にどれだけ動かされているかを受け取っていることがわかります。アナログ入力の場合、この実装の通り、

Vector3 translate = (new Vector3(h, 0, v) * Time.deltaTime) * Speed;
transform.Translate(translate);

とすればよいですが、PCゲームでありがちなWASD移動(デジタル入力)の場合、アナログ入力に移行するのは少し手間だし、互換性がなくなってしまいます。そこで、ある一定以上の入力があった場合、それをWASDに対応させることを考えます。例えば、Horizontalの値が一定の値以上だったら、それを水平方向右に動かすDキーに対応させるといったことを実装します。そうすれば、このある一定の値をcとかとして、

if (Input.GetKey(KeyCode.D))
{
    // 移動の処理
}

上のようなコードを

if (Joysick.Horizontal > c)
{
    // 移動の処理
}

のように書き換えるだけでスマホ対応ができてしまいます。では、このcの値はどのくらいに設定すればよいのでしょうか。Debug.LogJoystick.Horizontalの値を出力して調整してみましょう。

上の図くらい動かすとHorizontalの値は4.9くらいになっていることがわかります。よって、cは2~3くらいにすればちょうどいいのではないでしょうか。あとは、今DキーでやったことをWASでもやるだけで、プレイヤーの移動をすべてこのスティックに割り当てることができます。8888888888888888888888888888888

最後に

これでWASDで入力を受け取るようなPCゲームは大体スマホゲームになります。とても簡単なので、ぜひ試してみてください!
明日はクリスマスが近づいてきてウキウキな@Fogrexくんの記事です。お楽しみに。

N icon
この記事を書いた人
N

物体が接触している他の物体や地面等の固体の面を押しているとき、その力の面に垂直な成分に対し、同じ大きさで反対向きの、固体の面が物体を押し返す力たそ(◞‸◟っ)

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2020年12月4日
【一緒に始めよう】VSTプラグインをつくる【AdC2020 21日目】
liquid1224 icon liquid1224
2020年12月17日
一人でゲームを作ったハッカソン【AdC2020 34日目】
Komichi icon Komichi
2020年11月19日
ICPC国内予選2020参加記【AdC6日目】
tatyam icon tatyam
2020年12月21日
かけだしデザイナーが「ほぼ」1ヵ月間毎日ロゴを描いてみた話【AdC2020 38日目】
WhiteFox icon WhiteFox
2020年12月17日
JavaScriptの非同期処理についてのメモ【AdC2020 33日目】
reyu icon reyu
2020年12月13日
全方位木DPについて
ebi icon ebi
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記