78 lines
2.4 KiB
C#
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();
|
|
}
|
|
}
|