private void Update() { Damageable.DamageMessage data; data.damageSource = transform.position; data.amount = 1; data.damager = this; data.stopCamera = false; data.throwing = true; int count = Physics.OverlapSphereNonAlloc(transform.position, m_Collider.radius * transform.localScale.x, sOverlapCache, m_PlayerMask); for (int i = 0; i < count; ++i) { Damageable d = sOverlapCache[i].GetComponent <Damageable>(); if (d != null) { data.direction = d.transform.position - transform.position; d.ApplyDamage(data); } } }
private void OnTriggerStay(Collider other) { if ((damagedLayers.value & 1 << other.gameObject.layer) == 0) { return; } Damageable d = other.GetComponentInChildren <Damageable>(); if (d != null && !d.IsInvulnerable) { Damageable.DamageMessage message = new Damageable.DamageMessage { damageSource = transform.position, damager = this, amount = amount, direction = (other.transform.position - transform.position).normalized, throwing = false }; d.ApplyDamage(message); } }
public void DeactivateShield() { shield.SetActive(false); Damageable.SetColliderState(true); }
public void ActivateShield() { shield.SetActive(true); m_ShieldActivationTime = 3.0f; Damageable.SetColliderState(false); }
protected virtual void OnEnable() { m_Damageable = GetComponentInChildren <Damageable>(); m_EnemyController = GetComponentInChildren <EnemyController>(); }