using UnityEngine; public class PipeFixZone : MonoBehaviour { public string requiredItemName = "Pipe"; public GameObject fixedPipeVisual; private bool isFixed = false; void Start() { if (fixedPipeVisual != null) fixedPipeVisual.SetActive(false); } void Update() { if (isFixed) return; Inventory inventory = FindObjectOfType(); if (inventory == null) return; bool hasPipe = false; for (int i = 0; i < inventory.slots.Length; i++) { var item = inventory.slots[i]; if (item != null && item.itemName == requiredItemName) { hasPipe = true; break; } } if (hasPipe && Input.GetMouseButtonDown(0)) { Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward); int layerMask = ~LayerMask.GetMask("Player"); if (Physics.Raycast(ray, out RaycastHit hit, 3f, layerMask)) { if (hit.transform == transform) { inventory.slots[inventory.currentSlot] = null; inventory.EquipSlot(inventory.currentSlot); if (fixedPipeVisual != null) fixedPipeVisual.SetActive(true); isFixed = true; GetComponent().enabled = false; } } } } }