private void Update() { if (to) { transform.position = Vector3.MoveTowards(transform.position, to.position, speed * Time.deltaTime); if (transform.position == to.transform.position) { to = to == pathStart ? pathEnd : pathStart; } } if (target && weapon) { var targetPos = target.transform.position; var fwd = weapon.transform.position - targetPos; fwd.y *= -1f; var rotZ = Quaternion.LookRotation(fwd, Vector3.forward).eulerAngles.z; weapon.transform.rotation = Quaternion.Euler(0, 0, rotZ); if ((targetPos - transform.position).sqrMagnitude <= range * range) { if (!Physics2D.Linecast(transform.position, targetPos, LayerMask.GetMask("Environment")).collider) { if (weapon.CanFire()) { if (Random.value < aggressiveness) { weapon.OnTriggerPressed(); weapon.OnTriggerReleased(); } } } } } }
public void OnFire(InputAction.CallbackContext context) { if (!context.canceled) { return; } if (!_weapon.CanFire()) { return; } _weapon.Fire(transform.position, _directionCalculator.Direction); }