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; } } }
/// <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; } } }