private void Update()
        {
            //プレイヤーのターンでない場合は、その機能を終了します。
            if (!GameManager.instance.playersTurn)
            {
                return;
            }
            timer += Time.deltaTime;
            if (timer >= 3.0f && !infoText.isAppear)
            {
                infoText.Appear();
            }
            int horizontal = 0;     //水平移動方向を格納するために使用します。
            int vertical   = 0;     //垂直移動方向を格納するために使用します。

            //Unityエディタまたはスタンドアロンビルドで実行しているかどうかを確認します。
#if UNITY_STANDALONE || UNITY_WEBPLAYER || UNITY_WEBGL
            //攻撃処理
            if (Input.GetButtonDown("Fire1"))
            {
                timer = 0.0f;
                infoText.Disapper();
                Attack(direction);
            }
            else
            {
                //入力マネージャから入力を取得し、整数に丸め、水平軸に格納してx軸の移動方向を設定します
                horizontal = (int)(Input.GetAxisRaw("Horizontal"));

                //入力マネージャから入力を取得し、整数に丸め、y軸の移動方向を設定するために垂直に格納する
                vertical = (int)(Input.GetAxisRaw("Vertical"));

                //水平方向に移動するかどうかを確認し、垂直方向にゼロに設定する。
                if (horizontal != 0)
                {
                    vertical = 0;
                }
                //RotatePlayerボタンを押している間は移動せず、回転だけする
                if (Input.GetButton("RotatePlayer"))
                {
                    if (horizontal != 0 || vertical != 0)
                    {
                        timer = 0.0f;
                        infoText.Disapper();
                        RotatePlayer(horizontal, vertical);
                        horizontal = vertical = 0;
                    }
                }
            }
            //私たちがiOS、Android、Windows Phone 8、またはUnity iPhoneで動作しているか確認してください
#elif UNITY_IOS || UNITY_ANDROID || UNITY_WP8 || UNITY_IPHONE
            //入力がゼロ以上のタッチを登録しているかどうかを確認する
            if (Input.touchCount > 0)
            {
                //最初に検出されたタッチを保存します。
                Touch myTouch = Input.touches[0];

                //そのタッチの位相がBeganに等しいかどうかを確認する
                if (myTouch.phase == TouchPhase.Began)
                {
                    //その場合は、touchOriginをそのタッチの位置に設定します
                    touchOrigin = myTouch.position;
                }

                //タッチ位相がBeganでなく、代わりにEndedに等しく、touchOriginのxがゼロ以上である場合:
                else if (myTouch.phase == TouchPhase.Ended && touchOrigin.x >= 0)
                {
                    //このタッチの位置と等しくなるようにtouchEndを設定します
                    Vector2 touchEnd = myTouch.position;

                    //x軸のタッチの開始と終了の差を計算します。
                    float x = touchEnd.x - touchOrigin.x;

                    //タッチの開始と終了の差をy軸上で計算します。
                    float y = touchEnd.y - touchOrigin.y;

                    //touchIrigin.xを-1に設定すると、else if文がfalseと評価され、直ちに繰り返されることはありません。
                    touchOrigin.x = -1;

                    //x軸の差がy軸の差より大きいかどうかを確認してください。
                    if (Mathf.Abs(x) > Mathf.Abs(y))
                    {
                        //xが0より大きい場合、horizontalを1に設定し、そうでない場合は-1に設定します
                        horizontal = x > 0 ? 1 : -1;
                    }
                    else
                    {
                        //yが0より大きい場合は、horizontalを1に設定し、そうでない場合は-1に設定します
                        vertical = y > 0 ? 1 : -1;
                    }
                }
            }
#endif //#elifで上で起動したモバイルプラットフォーム依存のコンパイルセクションの終わり
            //水平または垂直に0以外の値があるかどうかを確認する
            if (horizontal != 0 || vertical != 0)
            {
                timer = 0.0f;
                infoText.Disapper();
                //AttemptMoveがジェネリックパラメータWallを渡すのは、プレイヤーが攻撃に遭遇した場合(攻撃した場合)
                //パラメータとして水平と垂直を渡して、Playerを移動する方向を指定します。
                AttemptMove <Wall>(horizontal, vertical);
            }
        }