71 lines
2.3 KiB
C#
71 lines
2.3 KiB
C#
using UnityEngine;
|
||
|
||
public enum ToolType { Hands, Sander, SprayCan }
|
||
|
||
public class PlayerToolManager : MonoBehaviour
|
||
{
|
||
[Header("Инструмент")]
|
||
public ToolType currentTool = ToolType.Hands;
|
||
|
||
[Header("Настройки")]
|
||
[SerializeField] private float toolRange = 2.5f;
|
||
[SerializeField] private LayerMask interactableLayer;
|
||
[SerializeField] private float sandSpeed = 0.35f; // Скорость очистки в сек.
|
||
[SerializeField] private Color sprayPaintColor = new Color(0.1f, 0.4f, 0.8f); // Выбранный цвет краски
|
||
|
||
private Camera playerCam;
|
||
|
||
private void Awake()
|
||
{
|
||
playerCam = GetComponentInChildren<Camera>();
|
||
}
|
||
|
||
private void Update()
|
||
{
|
||
// Не используем инструменты, если открыто меню или выбраны пустые руки
|
||
if (currentTool == ToolType.Hands) return;
|
||
|
||
// Зажата ЛКМ — работаем инструментом
|
||
if (Input.GetMouseButton(0))
|
||
{
|
||
UseActiveTool();
|
||
}
|
||
}
|
||
|
||
private void UseActiveTool()
|
||
{
|
||
Ray ray = new Ray(playerCam.transform.position, playerCam.transform.forward);
|
||
if (!Physics.Raycast(ray, out RaycastHit hit, toolRange, interactableLayer)) return;
|
||
|
||
CarPartVisuals visuals = hit.collider.GetComponentInParent<CarPartVisuals>();
|
||
if (visuals == null) return;
|
||
|
||
if (currentTool == ToolType.Sander)
|
||
{
|
||
// ШЛИФОВКА: снижаем ржавчину к 0
|
||
if (visuals.CurrentRust > 0f)
|
||
{
|
||
float updatedRust = visuals.CurrentRust - (sandSpeed * Time.deltaTime);
|
||
visuals.SetRust(updatedRust);
|
||
}
|
||
}
|
||
else if (currentTool == ToolType.SprayCan)
|
||
{
|
||
// ПОКРАСКА: красим, только если ржавчина удалена
|
||
if (visuals.CurrentRust <= 0.05f)
|
||
{
|
||
visuals.SetPaintColor(sprayPaintColor);
|
||
}
|
||
else
|
||
{
|
||
// Подсказка игроку
|
||
Debug.Log("Нельзя красить: деталь еще ржавая! Зашлифуйте её.");
|
||
}
|
||
}
|
||
}
|
||
|
||
public void SelectTool(ToolType newTool)
|
||
{
|
||
currentTool = newTool;
|
||
}
|
||
} |