Exemplo n.º 1
0
    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);
        }