using System; using UnityEngine; namespace GameDev.CoreSystems { public class Weapon : MonoBehaviour, IWeapon { [field: Header("RigConnections")] [field: SerializeField] public Transform PivotPoint { get; private set; } [field: SerializeField] public Transform BarrelEndPoint { get; private set; } [field: Header("Config")] [field: SerializeField] public float FireRate { get; set; } [field: SerializeField] public float Damage { get; set; } [field: Header("State")] [field: SerializeField] public bool FireWeapon { get; set; } [field: SerializeField] private float _timeUntilFire; private Vector3 _start; private Vector3 _direction; // private bool drawGizmo; // private Vector3 start; // private Vector3 end; // // private void OnEnable() // { // start = BarrelEndPoint.position; // end = BarrelEndPoint.position; // } // // private void OnDrawGizmos() // { // if (drawGizmo) // { // Gizmos.DrawLine(start, end); // } // } private void Update() { if (FireWeapon) { // drawGizmo = true; // start = BarrelEndPoint.position; // end = start + Vector3.forward * 5; _timeUntilFire -= Time.deltaTime; if (!(_timeUntilFire <= 0)) return; // _start = BarrelEndPoint.position; //_direction = BarrelEndPoint.forward; var ray = new Ray(BarrelEndPoint.position, BarrelEndPoint.forward); Debug.DrawRay(BarrelEndPoint.position, BarrelEndPoint.forward * 10, Color.green); if (Physics.Raycast(ray, out RaycastHit hitInfo)) { if (hitInfo.transform.TryGetComponent(out Targetable target)) { print("pew"); target.Damageable.ModifyHealth(Mathf.RoundToInt(-Damage)); } } _timeUntilFire = FireRate; } else { // drawGizmo = false; _timeUntilFire = 0; } } } }