public void StartDamageShipAnim(int damages, DamageSourceRelativePosition damageSourceRelativePosition) { shipRenderingManager.StartDamageAnimation(damages, damageSourceRelativePosition); if (shipFeedbacks != null) { shipFeedbacks.PlayDamageFeedback(); } }
public void StartDamageAnimation(int damages, DamageSourceRelativePosition damageSourceRelativePosition) { currentMaxRotationPerDamage = Mathf.Clamp(rotationForcePerTakenDamage * damages, 0, maxRotationFromDamages); if (damageSourceRelativePosition == DamageSourceRelativePosition.Right) { damageCurveCounter = 0.5f; } else { damageCurveCounter = 1.5f; } }
/// <summary> /// Used to receive the attack from the inputed source /// </summary> /// <param name="attackSource">The attack source that touched this attack receiver</param> /// <param name="attackParameters">The parameters of the received attack</param> public virtual void ReceiveDamage(IDamageSource damageSource, DamagesParameters damagesParameters, ProjectileSpecialParameters projSpecialParameters) { if (relatedShip.IsLifeProtected) { return; } relatedShip.LfManager.Damage(damagesParameters.GetDamageAmount, damagesParameters.GetRecoveringTime, damagesParameters.GetRecoveringType); #region Damage Feedback DamageSourceRelativePosition damageSourceRelativePosition = DamageSourceRelativePosition.Right; if (damageSource != null) { Vector3 attackSourceRelativePos = (damageSource.GetDamageSourcePosition - transform.position).normalized; Vector3 selfDirection = relatedShip.GetShipVelocity; if (Vector3.Dot(attackSourceRelativePos, selfDirection.GetLeftOrthogonalVectorXZ()) > 0) { damageSourceRelativePosition = DamageSourceRelativePosition.Left; } } else { int random = Random.Range(0, 2); if (random == 1) { damageSourceRelativePosition = DamageSourceRelativePosition.Left; } } relatedShip.StartDamageShipAnim(damagesParameters.GetDamageAmount, damageSourceRelativePosition); #endregion if (projSpecialParameters != null) { if (projSpecialParameters.GetSpeedModifier != null) { relatedShip.ShipMvt.StartNewSpeedModifier(projSpecialParameters.GetSpeedModifier); } if (projSpecialParameters.GetSkeweringParameters.Skewering) { relatedShip.SetCurrentSkeweringProjectile(projSpecialParameters.GetSkeweringParameters.GetSourceProjectile); } } }