47 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |