より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Unity Learn KartingTemplateをiPadをハンドルのように傾けて動かす

Switchのリングフィットアドベンチャーが転売屋のターゲットになる程、品薄状態で人気が出ているようです。

手帳、カメラ、ウォークマン、本・漫画、電話といった全ての小物がスマホに飲まれる時代ですが、それでもデバイスっていうのはワクワクさせてくれますよね。

過去にもNintendo DSとかWii、アナログスティック、バイブレーションといったものがゲームを楽しませてくれたものです。

Unity Learn Karting Templateはレースゲームのテンプレートなのですが、これを見たら、iPadをハンドルに見立てて車を操作してみたいとチャレンジしてみることにしました。

learn.unity.com

f:id:rimever:20200104132329p:plain
画面下部のプロジェクトウインドウより、コンポーネントを適当に選んで右クリック-Open C# Project

f:id:rimever:20200104132633p:plain
KartGame.KartSystems.KeyboardInputクラスを開きます。

        void Update ()
        {
            if (Input.GetKey (KeyCode.UpArrow))
                m_Acceleration = 1f;
            else if (Input.GetKey (KeyCode.DownArrow))
                m_Acceleration = -1f;
            else
                m_Acceleration = 0f;

            if (Input.GetKey (KeyCode.LeftArrow) && !Input.GetKey (KeyCode.RightArrow))
                m_Steering = -1f;
            else if (!Input.GetKey (KeyCode.LeftArrow) && Input.GetKey (KeyCode.RightArrow))
                m_Steering = 1f;
            else
                m_Steering = 0f;

// --------------------- ここから追加 ---------------------
            if (Math.Abs(Input.acceleration.x) > 0.1F)
            {
                m_Steering = (Input.acceleration.x > 0 ? 1f : -1f);
            }

            var accelerationY = Input.acceleration.y + 0.9F;
            if (Math.Abs(accelerationY) > float.Epsilon)
            {
                m_Acceleration = (accelerationY > 0 ? 1f : -1f);
            }
// --------------------- ここまで ---------------------

            m_HopHeld = Input.GetKey (KeyCode.Space);

            if (m_FixedUpdateHappened)
            {
                m_FixedUpdateHappened = false;

                m_HopPressed = false;
                m_BoostPressed = false;
                m_FirePressed = false;
            }

            m_HopPressed |= Input.GetKeyDown (KeyCode.Space);
            m_BoostPressed |= Input.GetKeyDown (KeyCode.RightShift);
            m_FirePressed |= Input.GetKeyDown (KeyCode.RightControl);
        }

追加するのはこれだけです。

このあたりは、個人の好みの問題であって、細かいパラメーターについては、これが答えというのはないと思います。

自分で動かしてはチューニング(調整)を繰り返す。

自分好みに仕上げていくのが、ゲーム開発の醍醐味かなと思ってます。

f:id:rimever:20200104131343p:plain
右に回すと右方向へ、左に回すと左方向。奥へ傾けるとアクセル。手前がブレーキ。

参考記事

docs.unity3d.com

kurowassan-app.fem.jp

uni.gas.mixh.jp

smartgames.hatenablog.com