using UnityEngine; [RequireComponent(typeof(SphereCollider))] public class PickupItem : MonoBehaviour { public ItemData item; public int amount = 1; public KeyCode interactKey = KeyCode.E; public float interactionRadius = 2.25f; public Inventory targetInventory; private Transform player; private bool playerInRange; private void Awake() { SphereCollider trigger = GetComponent(); trigger.isTrigger = true; trigger.radius = interactionRadius; } private void Start() { if (targetInventory == null) targetInventory = FindObjectOfType(); SimplePlayerController controller = FindObjectOfType(); if (controller != null) player = controller.transform; } private void Update() { if (player != null) SetPlayerInRange(Vector3.Distance(transform.position, player.position) <= interactionRadius); if (!playerInRange || item == null || targetInventory == null) return; if (DialogueManager.Instance != null && DialogueManager.Instance.IsDialogueActive) return; ShowHint(); if (Input.GetKeyDown(interactKey) && targetInventory.AddItem(item, amount)) { if (DialogueHUD.Instance != null) { DialogueHUD.Instance.SetStatus("Получен предмет: " + item.itemName); DialogueHUD.Instance.HideHint(); } gameObject.SetActive(false); } } private void OnTriggerEnter(Collider other) { if (other.GetComponentInParent() != null) { player = other.transform; SetPlayerInRange(true); } } private void OnTriggerExit(Collider other) { if (other.GetComponentInParent() != null) SetPlayerInRange(false); } private void OnDrawGizmosSelected() { Gizmos.color = new Color(0.2f, 0.8f, 1f, 0.25f); Gizmos.DrawSphere(transform.position, interactionRadius); Gizmos.color = new Color(0.2f, 0.8f, 1f, 1f); Gizmos.DrawWireSphere(transform.position, interactionRadius); } private void SetPlayerInRange(bool inRange) { if (playerInRange == inRange) return; playerInRange = inRange; if (!inRange && DialogueHUD.Instance != null) DialogueHUD.Instance.HideHint(); } private void ShowHint() { if (DialogueHUD.Instance != null) DialogueHUD.Instance.ShowHint("Нажмите E, чтобы подобрать: " + item.itemName); } }