public Encounter TakeMitigatedDamage(int points) { var modifier = Constants.DmgMod / (Constants.DmgMod + ActiveEnemy.Select(e => e.AttackDefense).ValueOr(() => 0)); var effectivePoints = (int)(points * modifier); return(TakeDamage(effectivePoints)); }
void OnTriggerEnter(Collider other) { ActiveEnemy enemy = other.GetComponent <ActiveEnemy>(); if (enemy != null) { enemy.health -= damage; Debug.Log(enemy.health); } else { Debug.Log(false); } Destroy(gameObject); }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { Vector3 point = new Vector3(playerCamera.pixelWidth / 2, playerCamera.pixelHeight / 2); Ray ray = playerCamera.ScreenPointToRay(point); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { ActiveEnemy enemy = hit.transform.gameObject.GetComponent <ActiveEnemy>(); if (enemy != null) { enemy.health -= damage; } } } }
public void Move() { _timeService = Services.Instance.TimeService; _bullet.position += _speed * _bullet.forward * _timeService.DeltaTime(); Collider[] _collidedObjects = new Collider[30]; var tagCollider = Physics.OverlapSphereNonAlloc(_bullet.transform.position, 3, _collidedObjects); for (int i = 0; i < tagCollider; i++) { if (_collidedObjects[i].CompareTag(TagManager.GetTag(TagType.Enemy))) { for (int b = 0; b < Services.Instance.LevelService.ActiveEnemies.Count; b++) { if (Services.Instance.LevelService.ActiveEnemies[b].GetTransform() == _collidedObjects[i].transform) { if (Services.Instance.LevelService.ActiveEnemies[b] is IDamageAddressee ActiveEnemy) { ActiveEnemy.RegisterDamage(_damage, ArmorTypes.None); } } } } } }