public void Spawn()
        {
            GameObject     spawn = Instantiate(spawnPrefab, transform.position, Quaternion.LookRotation(Vector3.up));
            EnemyCharacter enemy = spawn.GetComponent <EnemyCharacter>();

            spawn.SetActive(true);

            if (enemy != null)
            {
                spawns.Add(enemy);
            }

            else
            {
                Debug.LogError(transform.name + ": Spawn Point Spawed Obejct without EnemyNavAnim Component");
                Destroy(spawn);
            }
        }
        private void OnCollisionEnter(Collision collision)
        {
            if (collision.collider.isTrigger)
            {
                return;
            }

            EnemyCharacter enemy = collision.transform.root.GetComponent <EnemyCharacter>();

            if (enemy != null)
            {
                // Ignore dead bodies
                if (enemy.currentBehavior == Enemy.EnemyBehavior.Dead)
                {
                    return;
                }

                float magnitude = collision.relativeVelocity.magnitude;

                // Filter out small collisions
                if (magnitude < 5f)
                {
                    return;
                }

                else
                {
                    magnitude = Mathf.Max(magnitude, 15f); // Upper limit for damage
                }
                _animator.PushPlayer(magnitude, transform.position - collision.transform.position);

                float damage = enemy.Damage * (magnitude - 5f) * _gameManager.DamageMultiplier;

                TakeDamage(enemy.Damage * magnitude * _gameManager.DamageMultiplier);
            }
        }
Beispiel #3
0
 public void RemoveEnemy(EnemyCharacter enemy)
 {
     _enemies.Remove(enemy);
 }
Beispiel #4
0
 public void AddEnemy(EnemyCharacter enemy)
 {
     _enemies.Add(enemy);
 }