示例#1
0
    public static void Create(GameObject obj, GameObject StunnedObj, float StunnedTime)
    {
        var SE_Obj = obj.GetComponent <StatusEffect_Object>();

        if (SE_Obj is null)
        {
            return;
        }

        StatusEffect_Stunned SE_Stunned = obj.GetComponent <StatusEffect_Stunned>();

        // 각 상태이상에 대한 초기화 설정을 해준다.
        if (SE_Stunned.IsNull())
        {
            SE_Stunned = obj.AddComponent <StatusEffect_Stunned>();
            SE_Stunned.destroy_timer = new YCTimerData(StunnedTime, () => Destroy(SE_Stunned));
        }

        // 우선 순위 설정 높을수록 우선순위가 높음.
        SE_Stunned.priority   = 10;
        SE_Stunned.StunnedObj = StunnedObj;
        StunnedObj.SetActive(true);

        YCTimer.Add(SE_Stunned.destroy_timer);
    }
示例#2
0
    private void Awake()
    {
        hitOverlapData = new OverlapCheckData(
            onEnter: overlap =>
        {
            if (overlap.CompareTag("Player"))
            {
                return;
            }

            AttackData attackDataPunch = weaponItem.Heavy_AttackData;
            attackDataPunch.damage
                = new FloatStat(baseValue: Mathf.Lerp(1, weaponItem.Heavy_AttackData.damage.Value, weaponItem.Heavy_CurChargeTime / weaponItem.Heavy_FullChargeTime));

            PlayerStats.Inst.DealDamage(attackDataPunch, overlap.gameObject,
                                        PlayerActions.WeaponHit,
                                        PlayerActions.MeleeHeavyHit);

            float kbDur = (weaponItem.Heavy_CurChargeTime / weaponItem.Heavy_FullChargeTime) * 0.25f;
            float kbPow = (weaponItem.Heavy_CurChargeTime / weaponItem.Heavy_FullChargeTime) * 10f;

            // TODO
            //StatusEffect_Knokback.Create(overlap.gameObject, ((Vector2)transform.right + Vector2.up).normalized, kbPow, kbDur);

            GameObject stunnedEffect = overlap.GetComponent <StatusEffect_Object>()?.StunnedObj;
            if (stunnedEffect != null)
            {
                StatusEffect_Stunned.Create(overlap.gameObject, stunnedEffect, kbDur);
            }
        });

        contactFilter = new ContactFilter2D {
            useTriggers = false
        };
    }
    protected override bool DamageCreature(GameObject hit)
    {
        if (base.DamageCreature(hit))
        {
            GameObject stunnedEffect = hit.GetComponent <StatusEffect_Object>()?.StunnedObj;
            if (stunnedEffect != null)
            {
                StatusEffect_Stunned.Create(hit, stunnedEffect, 3f);
            }

            return(true);
        }

        return(false);
    }