†でおきしブログ†

ウナギ食べたいヽ(•̀ω•́ )ゝ✧

ドットインストールさんのUnity入門 MyBallGameにスワイプ操作を追加してみました

Unity入門 (全26回)|ドットインストール

ドットインストールさんのUnity入門でUnityを初めて学習してみました。
凄く分かり易かったので、未経験者の方はUnityの参考書とかよりも何よりもまずはドットインストールさんの動画でUnity学習をすると良いと思いました!

技術書とか読むよりも丁寧に作られた動画見ながらの方が頭に入ると思います。

全26回とありますが、3時間もあれば学習は終わると思います。
開発環境はUnityHub1.4.0、Unityは2018.3.0f2で学習してみました。

☆スマフォで動かしたくなる

せっかくなのでスマフォで動作させたいと思い、色々調べていたのですが、かなり悩んでしまったので、メモっておきます。

★スマフォ画面に期待通りに表示されない

GameViewの表示デバイスを切り替えて、カメラを操作して納得の行くように調整しましょう!
f:id:deokisikun:20190104055232p:plain
GameOver画面のUIのサイズについては、CanvasのScreen Math Modeを"Match Width Or Height"に選択した状態でMatchの値を適当に調整しました。

★スワイプ操作させたい

ドットインストールさんのUnity入門ですと、「Input.GetAxis ("Horizontal");」の左右キー操作なのでスマフォで操作ができません。

んで、ネットで検索してたんですがフィットする良い記事が見つからなくて、色々と試行錯誤しました。

☆スワイプ操作の追加コード

PaddleScript.csのUpdate()の中に以下コードを入れます。

        if (Input.GetMouseButton(0))
        {
            Vector3 position = Input.mousePosition;
            position.z = 10f;
            Vector3 worldposition = Camera.main.ScreenToWorldPoint(position);

            worldposition.y = transform.position.y;
            worldposition.z = transform.position.z;
            transform.position = worldposition; 

            // 移動制限
            if (transform.position.x < -2.5f)
            {
                transform.position = new Vector3(-2.5f, transform.position.y, transform.position.z);
            }
            if (transform.position.x > 2.5f)
            {
                transform.position = new Vector3(2.5f, transform.position.y, transform.position.z);
            }

        }
★コードの説明

タップしたX軸にパドルが追従するっていうコードです。

position.z = 10f;ってのはScreenToWorldPointでワールド座標に変換する際に、zに値が入っていないと変換が正常に行われない為に設定しています。※MainCameraのInspectorよりProjectionがOrthographic(平行投影)に設定されている場合は不要です。

☆結果

www.youtube.com

Unityのプレイ動画をQuickTImeの画面キャプチャで撮っています。
スマフォ(iOS)でも問題なく動作しました。

f:id:deokisikun:20190104061840p:plain