示例#1
0
    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();
                }
            }
        }
    }