diff --git a/Assets/Scripts/Turret.cs b/Assets/Scripts/Turret.cs index b857900..e7dc8bb 100644 --- a/Assets/Scripts/Turret.cs +++ b/Assets/Scripts/Turret.cs @@ -1,9 +1,9 @@ -using System; using UnityEngine; public class Turret : MonoBehaviour { [SerializeField] private TurretBullet _bulletPrefab; + [SerializeField] private Transform _bulletSpawnPoint; [SerializeField] private float _reloadTime = 1f; [SerializeField] private float _damage; [SerializeField] private float _distance = 3f; @@ -15,6 +15,12 @@ public class Turret : MonoBehaviour public float Damage => _damage; public float Distance => _distance; + private void Start() + { + if (_bulletSpawnPoint == null) + _bulletSpawnPoint = transform; + } + private void Update() { SpawnBullet(Vector3.forward); @@ -30,7 +36,7 @@ public class Turret : MonoBehaviour if (_reloadTimer < _reloadTime || !DetectEnemy(direction)) return; - _bulletPrefab.Spawn(this, direction); + _bulletPrefab.Spawn(this, _bulletSpawnPoint.position, direction); _reloadTimer = 0f; } diff --git a/Assets/Scripts/TurretBullet.cs b/Assets/Scripts/TurretBullet.cs index bbfc8f8..50252ac 100644 --- a/Assets/Scripts/TurretBullet.cs +++ b/Assets/Scripts/TurretBullet.cs @@ -23,13 +23,13 @@ public class TurretBullet : MonoBehaviour Destroy(gameObject); } - public TurretBullet Spawn(Turret turret, Vector3 direction) + public TurretBullet Spawn(Turret turret, Vector3 spawnPoint, Vector3 direction) { var rot = turret.transform.rotation; rot.SetLookRotation(direction); - var bullet = Instantiate(this, turret.transform.position, rot, turret.transform); + var bullet = Instantiate(this, spawnPoint, rot, turret.transform); bullet._damage += turret.Damage; - bullet._distance += turret.Distance; + bullet._distance += turret.Distance - Vector3.Distance(spawnPoint, bullet.transform.position); return bullet; }