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); }
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); }