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); } }
public void RemoveEnemy(EnemyCharacter enemy) { _enemies.Remove(enemy); }
public void AddEnemy(EnemyCharacter enemy) { _enemies.Add(enemy); }