Perekyp/Assets/Scripts/Car/Visuals/CarConditionGenerator.cs

47 lines
1.6 KiB
C#

using UnityEngine;
public class CarConditionGenerator : MonoBehaviour
{
[Header("Настройки спавна")]
[Range(0f, 1f)] [SerializeField] private float rustProbability = 0.7f; // Шанс появления ржавчины
[SerializeField] private float maxRustAmount = 0.85f;
[SerializeField] private Color baseCarColor = Color.gray;
private void Start()
{
GenerateCondition();
}
[ContextMenu("Сгенерировать состояние")]
public void GenerateCondition()
{
CarPart[] allParts = GetComponentsInChildren<CarPart>(true);
foreach (var part in allParts)
{
CarPartVisuals visuals = part.GetComponent<CarPartVisuals>();
if (visuals == null) visuals = part.gameObject.AddComponent<CarPartVisuals>();
// 1. Устанавливаем базовый цвет кузова
visuals.SetPaintColor(baseCarColor);
// 2. Если деталь пластиковая (бампер) — пропускаем ржавчину
if (part.Data != null && !part.Data.canRust)
{
visuals.SetRust(0f);
continue;
}
// 3. Рандомизируем ржавчину для металла
if (Random.value < rustProbability)
{
float randomRust = Random.Range(0.2f, maxRustAmount);
visuals.SetRust(randomRust);
}
else
{
visuals.SetRust(0f);
}
}
}
}