private void StartMove()
    {
        m_MoveDuration = 0;
        m_MoveElapsed  = 0;
        m_IsMoving     = true;

        Vector3 rayDirRevert = m_BulletInfo.MoveDir * (-1);
        Vector3 impactScrPos = m_BulletInfo.ImpactSrcPos + rayDirRevert * m_BulletInfo.MoveImpactRadius;
        Ray     ray          = new Ray(impactScrPos, m_BulletInfo.MoveDir);

        RaycastHit[] targetHitInfos = Physics.SphereCastAll(ray, m_BulletInfo.MoveImpactRadius,
                                                            m_BulletInfo.MoveDistanceMax);
        Script_Util.DrawPhysicsSphereCastLine(ray, m_BulletInfo.MoveDistanceMax, m_BulletInfo.MoveImpactRadius, Color.red, 10.0f);
        if (targetHitInfos != null && targetHitInfos.Length > 0)
        {
            Script_Util.SortRaycastHit(ref targetHitInfos);
            m_IsHit        = true;
            m_MoveHitInfo  = targetHitInfos[0];
            m_MoveDuration = m_MoveHitInfo.distance / m_BulletInfo.MoveSpeed;
            m_HitPos       = m_MoveHitInfo.point;
        }
        else
        {
            m_IsHit        = false;
            m_MoveDuration = m_BulletInfo.MoveDistanceMax / m_BulletInfo.MoveSpeed;
            m_HitPos       = Script_Util.CaculateRelativePos(m_BulletInfo.MoveStartPos,
                                                             m_BulletInfo.MoveDir, m_BulletInfo.MoveDistanceMax);
        }
    }