This repository has been archived on 2023-09-13. You can view files and clone it, but cannot push or open issues or pull requests.
station_obscurum_unity/Assets/Scripts/Item/InteractableItem.cs

78 lines
2.4 KiB
C#

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<TMP_Text>();
interaction_images = interactionCanvas.GetComponentsInChildren<Image>();
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();
}
}