// Update is called once per frame
    public override void Update()
    {
        //var playerNo = GamePadIndex;
        //var keyState = GamePad.GetState(playerNo, false);
        //var playerKeyNo = (KeyBoard.Index)playerNo;
        //var keyboardState = KeyBoard.GetState(KeyboardIndex, false);

        hMoveColliderScript = this.gameObject.GetComponent <MoveCollider>();


        // 各状態の処理
        base.Update();

        if (m_cStateMachineList[0].GetCurrentState() == m_cStateList[(int)EMouseState.ForcedWait])
        {
            return;
        }

        // レイキャストによる壁の当たり判定処理
        if (m_cStateMachineList[0].GetCurrentState() != m_cStateList[(int)EMouseState.Up])
        {
            Debug.DrawLine(this.transform.position, this.transform.position + this.transform.forward * 0.5f, Color.red);
            Ray        ray = new Ray(this.transform.position, this.transform.forward);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 0.5f))
            {
                var LayerName = LayerMask.LayerToName(hit.collider.gameObject.layer);
                var TagName   = hit.collider.gameObject.tag;
                if (LayerName == "Box" || LayerName == "Rail")
                {
                    if (TagName == "CanClimbing")
                    {
                        //Debug.Log(hit.collider.gameObject.transform.position);
                        if (LayerName == "Rail")
                        {
                            m_GTargetBoxObject = hit.collider.gameObject.transform.parent.gameObject.transform.parent.gameObject;
                        }
                        else
                        {
                            m_GTargetBoxObject = hit.collider.gameObject;
                        }
                        if (m_cStateMachineList[0].GetCurrentState() != m_cStateList[(int)EMouseState.Pipe])
                        {
                            ChangeState(0, EMouseState.Up);
                        }
                        return;
                    }
                }
            }

            Ray        Downray = new Ray(transform.position, -transform.up);
            RaycastHit Downhit;
            Debug.DrawLine(transform.position, transform.position - transform.up, Color.red);
            if (Physics.Raycast(Downray, out Downhit, 1f))
            {
                //Debug.Log("DownRootObject : " + Downhit.collider.gameObject.transform.parent.gameObject.transform.gameObject.name);
                Debug.Log("DownHumanRayHit : " + Downhit.collider.gameObject.name);
                Debug.Log("DownHitTag : " + Downhit.collider.tag);

                var LayerName = LayerMask.LayerToName(Downhit.collider.gameObject.layer);
                var TagName   = Downhit.collider.gameObject.tag;
                if (LayerName == "Rail")
                {
                    if (TagName == "Rail")
                    {
                        m_GTargetBoxObject = Downhit.collider.gameObject.transform.parent.gameObject.transform.parent.gameObject;
                        ChangeState(0, EMouseState.Rail);
                    }
                }
                else
                {
                    if (CheckCurrentState(EMouseState.Rail))
                    {
                        ChangeState(0, EOldState);
                    }
                }
            }
        }
    }
    // Update is called once per frame
    public override void Update()
    {
        hCatchZone          = this.transform.Find("CatchZone").GetComponent <HCatchZone>();
        hMoveColliderScript = this.gameObject.GetComponent <MoveCollider>();

        // 各状態の処理
        base.Update();

        if (m_cStateMachineList[0].GetCurrentState() == m_cStateList[(int)EHumanState.ForcedWait])
        {
            return;
        }

        //var startpos = this.transform.position /*+ new Vector3(0f, -0.8f)*/;
        //Debug.DrawLine(startpos, startpos + this.transform.forward, Color.red);
        if (m_cStateMachineList[0].GetCurrentState() != m_cStateList[(int)EHumanState.Up])
        {
            Ray ray = new Ray(this.transform.position /*+ new Vector3(0f,-0.8f)*/, this.transform.forward);
            Debug.DrawLine(transform.position, transform.position + transform.forward, Color.red);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 1f))
            {
                Debug.Log("RootObject : " + hit.collider.gameObject.transform.root.gameObject.name);
                Debug.Log("HumanRayHit : " + hit.collider.gameObject.name);
                Debug.Log("HitTag : " + hit.collider.tag);
                var LayerName = LayerMask.LayerToName(hit.collider.gameObject.layer);
                var TagName   = hit.collider.gameObject.tag;
                Debug.Log("LayerName : " + LayerName);
                if (LayerName == "Rail")
                {
                    if (TagName == "CanClimbing")
                    {
                        Debug.Log("ChangeState");
                        m_GTargetBoxObject = hit.collider.gameObject.transform.root.gameObject;
                        ChangeState(0, EHumanState.Up);
                        return;
                    }
                }
            }

            Ray        Downray = new Ray(transform.position, -transform.up);
            RaycastHit Downhit;
            Debug.DrawLine(transform.position, transform.position - transform.up, Color.red);
            if (Physics.Raycast(Downray, out Downhit))
            {
                Debug.Log("DownRootObject : " + Downhit.collider.gameObject.transform.root.gameObject.name);
                Debug.Log("DownHumanRayHit : " + Downhit.collider.gameObject.name);
                Debug.Log("DownHitTag : " + Downhit.collider.tag);

                var LayerName = LayerMask.LayerToName(Downhit.collider.gameObject.layer);
                var TagName   = Downhit.collider.gameObject.tag;
                if (LayerName == "Rail")
                {
                    m_GTargetBoxObject = Downhit.collider.gameObject.transform.root.gameObject;
                    ChangeState(0, EHumanState.Rail);
                }
                else
                {
                    if (CheckCurrentState(EHumanState.Rail))
                    {
                        ChangeState(0, EOldState);
                    }
                }
            }
        }
    }