private void PushAway(Collider col) { // Stun the player PlayerStatusManager psm = col.GetComponent <PlayerStatusManager>(); psm.ApplyCrowdControl(new CrowdControl(CrowdControlType.Stun, DamageType.Melee, DamageElement.Physical), STUN_DURATION); // Push the player away Vector3 knightCenter = km.transform.position; Vector3 position = col.transform.position; Vector3 finalPosition = position + (position - knightCenter).normalized * (PUSH_AWAY_RANGE - (position - knightCenter).magnitude); // x and z AnimationCurve xCurve = new AnimationCurve(); xCurve.AddKey(new Keyframe(0, position.x)); xCurve.AddKey(new Keyframe(PUSH_AWAY_DURATION, finalPosition.x)); AnimationCurve zCurve = new AnimationCurve(); zCurve.AddKey(new Keyframe(0, position.z)); zCurve.AddKey(new Keyframe(PUSH_AWAY_DURATION, finalPosition.z)); // y AnimationCurve yCurve = new AnimationCurve(); yCurve.AddKey(new Keyframe(0, position.y)); yCurve.AddKey(new Keyframe(PUSH_AWAY_DURATION, position.y)); // Add curve to player movement psm.playerMotor.MoveByCurve(PUSH_AWAY_DURATION, xCurve, yCurve, zCurve); }
private void ApplyDamage(Collider col) { PlayerStatusManager psm = col.GetComponent <PlayerStatusManager>(); Damage dmg = new Damage(25f, DamageType.Melee, DamageElement.Physical, em.transform.position); if (psm.IsAffectedBy(dmg, em, em.transform.position)) { psm.TakeDamage(dmg, em); psm.ApplyCrowdControl(new CrowdControl(CrowdControlType.Stun, DamageType.Melee, DamageElement.Physical), STUN_DURATION); } }
public override void OnColliderEnter(AbilityColliderTrigger abilityColliderTrigger, Collider col) { if (col.tag == "Player" && !cols.ContainsKey(col)) { cols.Add(col, Time.time); // Stun the player and push away PlayerStatusManager psm = col.GetComponent <PlayerStatusManager>(); if (psm.IsAffectedByCC(new CrowdControl(CrowdControlType.ForcedMove, DamageType.AreaOfEffect, DamageElement.Physical))) { psm.ApplyCrowdControl(new CrowdControl(CrowdControlType.Stun, DamageType.AreaOfEffect, DamageElement.Physical), STUN_DURATION); PushAway(psm, abilityColliderTrigger, col); } } }
private void DamagePart1(Collider col) { PlayerStatusManager psm = col.GetComponent <PlayerStatusManager>(); Damage dmg = new Damage(SHIELD_DMG, DamageType.AreaOfEffect, DamageElement.Physical, em.transform.position); if (psm.IsAffectedBy(dmg, em)) { if (psm.IsAffectedByCC(new CrowdControl(CrowdControlType.ForcedMove, DamageType.AreaOfEffect, DamageElement.Physical))) { psm.ApplyCrowdControl(new CrowdControl(CrowdControlType.Stun, DamageType.AreaOfEffect, DamageElement.Physical), STUN_DURATION); PushAway(col); } psm.TakeDamage(dmg, em); missed = false; } }