Пример #1
0
    public override void UseSkill()
    {
        base.UseSkill();

        for (int i = -2; i <= 2; i++)
        {
            // 데미지 설정
            Damage damage = new Damage();
            damage.normalDamage     = currentAttackPower;
            damage.sourceGameObject = gameObject;

            // 스킬 콜리전 생성
            float              angle               = Quaternion.FromToRotation(Vector3.right, direction).eulerAngles.z; // 회전 기본값 가져오기
            GameObject         tempSkillObject     = Instantiate(skillObject, transform.position, Quaternion.Euler(0, 0, angle + i * 10));
            Skill              skill               = tempSkillObject.GetComponent <Skill>();
            SkillMovement_Path skillMovement       = tempSkillObject.GetComponent <SkillMovement_Path>();
            SpriteRenderer     SkillSpriteRenderer = tempSkillObject.transform.Find("Sprite").GetComponent <SpriteRenderer>();

            // 스킬 콜리전 설정
            skill.team   = team;   // 팀 구별 색인자
            skill.damage = damage; // 범위내 적에게 줄 데미지 정보, 틱데미지일경우 한틱당 데미지

            // 스킬 활성화
            skillMovement.Play();
        }
    }
Пример #2
0
    public override void UseSkill()
    {
        // 타겟이 없으면 생략
        if (!target)
        {
            return;
        }

        base.UseSkill();

        // 스킬 생성
        float      angle      = Quaternion.FromToRotation(Vector3.right, direction).eulerAngles.z;           // 회전 기본값 가져오기
        GameObject tempObject = Instantiate(skillObject, transform.position, Quaternion.Euler(0, 0, angle)); // 스킬 방향이 보는 방향이 일치해야하며, 내 위치에서 생성될 때

        // 스킬 정보 설정
        Skill skill = tempObject.GetComponent <Skill>();

        skill.team = team; // 팀 구별 색인자
        Damage tempDamage = new Damage();

        tempDamage.sourceGameObject = gameObject;
        skill.damage = tempDamage;

        // 스킬 이동 실행(이동을 할 경우)
        if (tempObject.GetComponent <SkillMovement_Path>() != null)
        {
            SkillMovement_Path skillMovement = tempObject.GetComponent <SkillMovement_Path>();
            float          x           = (target.transform.position - transform.position).magnitude;
            List <Vector2> pathVectors = new List <Vector2>();
            pathVectors.Add(new Vector2(x, 0));
            skillMovement.VectorList = pathVectors;
            Damage damage = new Damage();
            damage.sourceGameObject           = gameObject;
            damage.magicDamage                = 200 * currentSpellPower / 100;
            skillMovement.endSpawnSkillDamage = damage;
            skillMovement.Play();
        }
    }