using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI; [RequireComponent(typeof(Collider))] [RequireComponent(typeof(Rigidbody))] public abstract class InteractableItem : CarryableItem { [SerializeField] private Canvas interactionCanvas; private TMP_Text[] interaction_texts; private Image[] interaction_images; protected float target_alpha = 0; [SerializeField] protected bool canPickup = false; protected bool isEnabled = false; public bool CanPickup { get { return canPickup; } } public bool IsEnabled { get { return isEnabled; } } public void Enable() { print("Enabled!"); interactionCanvas.transform.LookAt((GameObject.FindGameObjectWithTag("MainCamera").transform.position)); interactionCanvas.transform.Rotate(0, 180, 0); target_alpha = 1; isEnabled = true; } public void Disable() { print("Disabled!"); target_alpha = 0; isEnabled = true; } public abstract bool Interact(); public abstract bool Interact(ref Inventory inventory,ref HeavyInteractableItem heavyInvent); protected void BaseAwake() { interaction_texts = interactionCanvas.GetComponentsInChildren(); interaction_images = interactionCanvas.GetComponentsInChildren(); foreach (TMP_Text text in interaction_texts) { text.color = new Color(text.color.r, text.color.g, text.color.b, 0); } foreach (Image image in interaction_images) { image.color = new Color(image.color.r, image.color.g, image.color.b, 0); } } protected void BaseFixedUpdate() { foreach (TMP_Text text in interaction_texts) { text.color = Color.Lerp(new Color(text.color.r, text.color.g, text.color.b, text.color.a), new Color(text.color.r, text.color.g, text.color.b, target_alpha), 10 * Time.deltaTime); } foreach (Image image in interaction_images) { image.color = Color.Lerp(new Color(image.color.r, image.color.g, image.color.b, image.color.a), new Color(image.color.r, image.color.g, image.color.b, target_alpha), 10 * Time.deltaTime); } } private void Awake() { BaseAwake(); } private void FixedUpdate() { BaseFixedUpdate(); } }