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

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

2DPlatformerTemplateをiPhoneで操作できるようにしてみる。

UnityHubから作成することのできる2DPlatformerTemplateですが、なかなか遊べる出来です。

f:id:rimever:20191012235539p:plain

ぶっちゃけマリオですが、敵や宝石の配置も工夫されています。

せっかくなんだから、iPhoneにインストールして操作できるようにしてみたいところです。

デフォルトでは十字キーとJumpボタンで操作するようにされているため、iPhoneでビルド&実行したところで動かせません。

なので、Unityの勉強がてらソースを修正して、タップ操作できるようにしてみました。

PlayerController.csを開いて、Updateメソッドを修正します。

        protected override void Update()
        {
            if (controlEnabled)
            {
                move.x = 0;
                if (Input.GetMouseButtonDown(0))
                {
                    touchStartPosition = Input.mousePosition;
                }

                var threshold = 10F;
                if (Input.GetMouseButton(0)
                    && Math.Abs(touchStartPosition.x - Input.mousePosition.x) > threshold)
                {
                    move.x = (touchStartPosition.x < Input.mousePosition.x ? 1f : -1f);
                }

                bool isJump = (touchStartPosition.y + threshold < Input.mousePosition.y) && Input.GetMouseButton(0);

                if (jumpState == JumpState.Grounded
                    && isJump)
                {
                    jumpState = JumpState.PrepareToJump;
                }
                else if (!isJump)
                {
                    stopJump = true;
                    Schedule<PlayerStopJump>().player = this;
                }
            }
            else
            {
                move.x = 0;
            }
            UpdateJumpState();
            base.Update();
        }

タップ操作で、ジャンプと移動をどう両立するかはいくつも考えられますし、そこが面白いところです。

ここでのコードではスライドでジャンプも左右移動も兼ねる操作方法になります。

f:id:rimever:20191013000258p:plain
イェーイ!

参考記事

techblog.gracetory.co.jp