private IEnumerator DragonSkill()
    {
        GameObject       breathObject = MonoBehaviour.Instantiate(dragonBreathPrefab) as GameObject;
        DragonSkillModel skillModel   = new DragonSkillModel();

        skillModel.appreanceFrame      = defaultSkillInfo.m_sSkillBullet.dragonSkill.eachDuration;
        skillModel.gapFrame            = defaultSkillInfo.m_sSkillBullet.dragonSkill.gapDuration;
        skillModel.isRight             = moveScript.IsRight();
        skillModel.sheetingFrame       = defaultSkillInfo.m_sSkillBullet.dragonSkill.eachDuration;
        skillModel.sheetingSprite      = dragonLaserSprite;
        skillModel.sheetingSpriteStart = dragonSparkSprite;
        skillModel.stretchXMax         = defaultSkillInfo.m_sSkillBullet.dragonSkill.laserXArea;
        skillModel.stretchXMin         = defaultSkillInfo.m_sSkillBullet.dragonSkill.sparkXArea;
        skillModel.targetArray         = new ArrayList();
        skillModel.targetArray.Add(GlobalLayerMask.ENEMY_MASK);;


        float offsetValue = breathObject.GetComponent <CapsuleCollider2D>().size.x / 2 * breathObject.transform.localScale.x;
        float charSizeX   = moveScript.GetCurrentSize().x;

        breathObject.transform.position = new Vector3(
            moveScript.GetCurrentPostion().x + (moveScript.IsRight()? offsetValue : -offsetValue) + charSizeX,
            moveScript.GetCurrentPostion().y,
            moveScript.GetCurrentPostion().z);

        breathObject.transform.localScale = new Vector3(moveScript.IsRight() ? 1 : -1, 1, 1);

        BreathScript breathScript = breathObject.GetComponent <BreathScript>();

        breathScript.SetParameter(skillModel);
        yield return(new WaitUntil(() => breathScript.EndSkill() == true));

        Destroy(breathObject);

        moveScript.ReleaseInvincibility();
        moveScript.ReleaseHold();
        duringSkill = false;
    }
 public void SetParameter(DragonSkillModel _argModel)
 {
     skillModel  = _argModel;
     currentStat = BREATH_STATUS.SHEETITING_START;
 }