private void OnDamageEvent(WeaponDamageEvent evt) { if(evt.Damage.hit.target == Entity) { CurrentHealth -= evt.Damage.amount; } }
private void OnDamageEvent(WeaponDamageEvent evt) { GameObject bloodParticle = Instantiate(bloodParticlePrefab); bloodParticle.transform.SetParent(transform); bloodParticle.transform.position = evt.Damage.hit.point; bloodParticle.transform.rotation = Quaternion.FromToRotation(transform.forward, evt.Damage.hit.normal) * transform.rotation; }
private void OnDamageReceived(WeaponDamageEvent evt) { if(Time.time - lastTime >= delay) { lastTime = Time.time; audioManager.PlayRandomAt(damageSounds, Entity.transform.position); } }
private void OnDamageReceived(WeaponDamageEvent evt) { if(!dead && health.CurrentHealth <= 0) { dead = true; EntityDiedEvent diedEvent = new EntityDiedEvent(evt.Damage, Entity); GlobalEvents.Invoke(diedEvent); Entity.Events.Invoke(diedEvent); // Mark the entity as dead Entity.AddTag("Dead"); } }
protected virtual void FixedUpdate() { if(firing) { foreach(WeaponComponent component in components) { component.TryFire(); } if(CanFire()) { Vector3 direction = GetAimDirection(); HitInfo hit = GetHitInfo(direction); foreach(WeaponComponent component in components) { component.OnFire(hit); } GlobalEvents.Invoke(new WeaponFireEvent(this, hit)); if(hit.target != null) { if(hit.target.GetComponentInChildren<Damagable>() != null) { DamageInfo damage = new DamageInfo(hit, GetDamage(hit)); WeaponDamageEvent damageEvent = new WeaponDamageEvent(this, damage); foreach(WeaponComponent component in components) { component.OnDamage(damage); } GlobalEvents.Invoke(damageEvent); hit.target.Events.Invoke(damageEvent); } } } } }
private void OnWeaponDamageEvent(WeaponDamageEvent evt) { rigidbody.AddForce(-evt.Hit.normal * 7, ForceMode.Impulse); }