private IEnumerator SkillProcess() { State = CharacterState.SkillActivated; originalMoveSpeed = moveSpeed; moveSpeed = skillMoveSpeed; float elapsedTime = 0f; while (true) { yield return(null); elapsedTime += Time.deltaTime; if (elapsedTime > poisonCreateIntervalSecond) { SfxManager.Instance.Play(SfxType.Doctor_Skill); elapsedTime -= poisonCreateIntervalSecond; Poison newPoison = Instantiate(poisonPrefab).GetComponent <Poison>(); newPoison.SetOwner(this); newPoison.gameObject.layer = this.gameObject.layer; float scale = Random.Range(poisonSizeRange.x, poisonSizeRange.y); newPoison.transform.localScale = new Vector3(scale, scale, scale); Vector3 createPos = this.transform.position; createPos.x += Random.Range(poisonPosRange.x, poisonPosRange.y); createPos.y += Random.Range(poisonPosRange.x, poisonPosRange.y); newPoison.transform.position = createPos; Mp -= (int)(skillNeedMp * poisonCreateIntervalSecond); if (Mp <= 0) { Mp = 0; CancelSkill(); } } } }