using UnityEngine; using TMPro; public class PickUpKeyCard : MonoBehaviour { public TMP_Text interactionPrompt; private Outline outline; [SerializeField] private Animator objectAnimator; [SerializeField] private string animationName = "PickupAnimation"; [SerializeField] private AudioClip pickupSound = null; [SerializeField] private string keyCardName = "Deck D key card"; [SerializeField] private KeyCardPlayer keyCardPlayer = null; [SerializeField] private float interactionDistance = 5.0f; [SerializeField] private Item keyCardItem; [SerializeField] private Inventory playerInventory; private bool isPickedUp = false; void Awake() { outline = GetComponent(); if (outline != null) outline.enabled = true; if (interactionPrompt != null) interactionPrompt.enabled = false; } void Update() { if (!isPickedUp) { Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0)); if (Physics.Raycast(ray, out RaycastHit hit, interactionDistance)) { if (hit.collider.gameObject == gameObject) { if (interactionPrompt != null) { interactionPrompt.text = "Left click to pick up " + keyCardName; interactionPrompt.enabled = true; } if (Input.GetMouseButtonDown(0)) { isPickedUp = true; // Mark key card as picked up in your custom script if (keyCardPlayer != null) keyCardPlayer.hasKeyCard = true; // Add the keycard to player's inventory if (playerInventory != null && keyCardItem != null) { playerInventory.AddItem(keyCardItem); gameObject.SetActive(false); // Refresh the UI InventoryUI inventoryUI = FindObjectOfType(); if (inventoryUI != null) { inventoryUI.RefreshUI(); } } if (outline != null) outline.enabled = false; if (interactionPrompt != null) interactionPrompt.enabled = false; // Play pickup animation if (objectAnimator != null) objectAnimator.Play(animationName, 0, 0.0f); // Play sound if (pickupSound != null) SoundFXManager.instance.PlaySound(pickupSound, transform, 1.5f); } } else { if (interactionPrompt != null) interactionPrompt.enabled = false; } } else { if (interactionPrompt != null) interactionPrompt.enabled = false; } } } }