Files
BABA_YAGA/Assets/Scripts/Interactables/LampInteractable.cs

72 lines
2.4 KiB
C#
Raw Normal View History

2026-04-01 02:41:07 +07:00
using UnityEngine;
2026-04-02 08:54:19 +07:00
using System.Collections.Generic;
2026-04-01 02:41:07 +07:00
namespace OnlyScove.Scripts
{
public class LampInteractable : BaseInteractable
{
2026-04-02 08:54:19 +07:00
[Header("Light Settings")] [SerializeField]
private List<Light> targetLights = new List<Light>(); // Cho phép gán nhiều đèn
2026-04-01 02:41:07 +07:00
[SerializeField] private bool isOn = true;
2026-04-02 08:54:19 +07:00
[Header("Emission Settings (Optional)")] [SerializeField]
private MeshRenderer lampRenderer;
[SerializeField] private int materialIndex = 0;
[SerializeField] private string emissionColorProperty = "_EmissionColor";
private Material lampMaterial;
private Color originalEmissionColor;
2026-04-01 02:41:07 +07:00
private void Start()
{
2026-04-02 08:54:19 +07:00
// Khởi tạo Material (tạo bản thực thi riêng để không lỗi Shader)
if (lampRenderer != null && materialIndex < lampRenderer.materials.Length)
{
lampMaterial = lampRenderer.materials[materialIndex];
if (lampMaterial.HasProperty(emissionColorProperty))
{
originalEmissionColor = lampMaterial.GetColor(emissionColorProperty);
}
}
UpdateLightState();
2026-04-01 02:41:07 +07:00
}
protected override void PerformInteraction(PlayerStateMachine player)
{
isOn = !isOn;
2026-04-02 08:54:19 +07:00
UpdateLightState();
// Log cực mạnh để bạn kiểm tra Console
Debug.LogWarning($"<color=yellow>[Lamp]</color> Đèn đã chuyển sang: {(isOn ? "BẬT" : "TẮT")}");
}
private void UpdateLightState()
{
// Bật/Tắt tất cả các đèn trong danh sách
foreach (var light in targetLights)
{
if (light != null) light.enabled = isOn;
}
// Bật/Tắt hiệu ứng phát sáng của vật liệu
if (lampMaterial != null)
{
if (isOn)
{
lampMaterial.SetColor(emissionColorProperty, originalEmissionColor);
lampMaterial.EnableKeyword("_EMISSION");
}
else
{
// Tắt hẳn màu phát sáng
lampMaterial.SetColor(emissionColorProperty, Color.black);
lampMaterial.DisableKeyword("_EMISSION");
}
}
2026-04-01 02:41:07 +07:00
}
}
2026-04-02 08:54:19 +07:00
}