private void Shoot()
    {
        RaycastHit2D hit = Physics2D.Raycast(
            transform.position,
            transform.up,
            _vision, LayerMask.GetMask("Enemy"));

        Debug.DrawRay(transform.position, transform.up * _vision);

        if (hit.collider == null)
        {
            return;
        }

        if (!hit.transform.CompareTag("Enemy"))
        {
            return;
        }

        ProjectileBehaviourScript projectile = null;

        for (int i = 0; i < _projectilePool.Length; i++)
        {
            if (_projectilePool [i].gameObject.activeSelf == false)
            {
                projectile = _projectilePool [i];

                projectile.transform.position = transform.position;
                projectile.transform.rotation = transform.rotation;
                projectile.Shoot();

                break;
            }
        }
    }
Exemplo n.º 2
0
        /// <summary>
        /// Shoot a projectil
        /// </summary>
        public virtual void Shoot()
        {
            RaycastHit2D hit = Physics2D.Raycast(
                _body.position,
                _body.up,
                _sensorFieldSize + 0.2f, LayerMask.GetMask(_enemyLayer));

#if UNITY_EDITOR
            Debug.DrawRay(_body.position, _body.up * _sensorFieldSize);
#endif
            if (hit.collider == null)
            {
                return;
            }

            if (!hit.transform.CompareTag(_enemyTag))
            {
                return;
            }

            ProjectileBehaviourScript projectile = null;

            for (int i = 0; i < _projectilePool.Length; i++)
            {
                if (_projectilePool[i].gameObject.activeSelf == false)
                {
                    projectile = _projectilePool[i];
                    projectile.gameObject.tag     = gameObject.tag;
                    projectile.transform.position = _body.position;
                    projectile.transform.rotation = _body.rotation;
                    projectile.Shoot();
                    break;
                }
            }
        }