コード例 #1
0
ファイル: AISystem.cs プロジェクト: matrix4x4/Space
        public void OnDamageReceived(DamageReceived message)
        {
            var ai = (ArtificialIntelligence)Manager.GetComponent(message.Damagee, ArtificialIntelligence.TypeId);

            if (ai != null && ai.CurrentBehavior != ArtificialIntelligence.BehaviorType.Attack &&
                // Make sure it makes sense to fire back. For example, it doesn't make sense
                // to start shooting a radiating body / nebula.
                Manager.GetComponent(message.Owner, Health.TypeId) != null)
            {
                ai.Attack(message.Owner);
            }
        }
コード例 #2
0
ファイル: Health.cs プロジェクト: SROPPE/Lumberjack
 public void TakeDamage(GameObject from, float damage)
 {
     if (_currentHealthPoints > 0)
     {
         _currentHealthPoints -= damage;
         SetEventArgs(from, damage, damage / maxHealthPoints);
         DamageReceived?.Invoke(this, _eventArgs);
     }
     if (_currentHealthPoints <= 0)
     {
         Death?.Invoke(this, _eventArgs);
         Destroy(gameObject);
     }
     if (destructionSequence != null)
     {
         var remainingHealth = 1 - damage / maxHealthPoints;
         StartCoroutine(destructionSequence.DestructionSequenceCorutine(this, remainingHealth));
     }
 }
コード例 #3
0
        public void ChangeHP(int deltaHP)
        {
            int newHP = (int)HP;

            newHP += deltaHP;

            if (newHP > HP)
            {
                HealReceived?.Invoke();
            }
            else if (newHP < HP)
            {
                DamageReceived?.Invoke();
            }
            else if (newHP <= 0)
            {
                Death?.Invoke();
            }

            HP = (uint)newHP;

            HealthChanged?.Invoke();
        }
コード例 #4
0
 public virtual void ReceiveDamage(int amount)
 {
     DamageReceived?.Invoke(amount);
 }
コード例 #5
0
 public void OnDamageReceived(DamageReceived message)
 {
     ApplyDamage(message.Owner, message.Attributes, message.Damagee);
 }