/// <summary>
 /// 床を通り抜けて飛び降りる
 /// IgnoreCollisionController2D コンポーネントがアタッチされた床をすり抜けることができる
 /// </summary>
 /// <returns>足下の床が通り抜けられるものだった場合 true, 飛び降りることができない床だった場合 false を返す</returns>
 bool DropDownFloor()
 {
     // 自分が立っている床がすり抜けられる床だったら、自分との衝突判定を無効にする
     m_floorCollisionDisabled = m_floorStandingOn?.GetComponent <IgnoreCollisionController2D>();
     m_floorCollisionDisabled?.IgnoreCollision(m_collider, true);   // 注: プレイヤーのコライダーが一つであることを前提としている
     return(m_floorCollisionDisabled);
 }
    void FixedUpdate()
    {
        bool isGrounded = IsGrounded();

        // 衝突判定を無効にした床を通り抜けたら、無効にした判定を戻す
        if (m_floorCollisionDisabled)
        {
            if (!isGrounded)
            {
                m_floorCollisionDisabled.IgnoreCollision(m_collider, false);
                m_floorCollisionDisabled = null;
            }
        }

        // 空中制御処理
        if (!isGrounded && ((m_h > 0 && m_rb.velocity.x < m_runSpeed) || (m_h < 0 && -1 * m_runSpeed < m_rb.velocity.x)))
        {
            m_rb.AddForce(m_h * m_movePowerInTheAir * Vector2.right);
        }
    }