public virtual void ApplyDamage(int damage) { if (MasterDamageReciever) { MasterDamageReciever.ApplyDamage(damage); } else { Health -= damage; if (Health <= 0) { Die(); } } }
protected virtual void FixedUpdate() { if (_initialized) { float distanceTravelledThisUpdate = Speed * Time.fixedDeltaTime; RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit, distanceTravelledThisUpdate, hittableLayers, QueryTriggerInteraction.Ignore)) { DamageReciever dr = hit.transform.GetComponent <DamageReciever>(); if (dr) { dr.ApplyDamage(Damage); } transform.position = hit.point; Destroy(gameObject); } else { transform.position += transform.forward * distanceTravelledThisUpdate; } } }