Files
aibis-dream/Assets/Scripts/MiniGame/Engine/MovablePartGroup.cs
T
2025-02-20 19:52:00 +08:00

56 lines
1.3 KiB
C#

using System;
using UnityEngine;
namespace AibisDream
{
public class MoveablePartGroup : MonoBehaviour
{
#region 动件索引
[Header("可动组件索引")]
public EngineGear[] engineGears;
public GameObject piston;
#endregion
private EngineSystem _engineSystem;
private void Awake()
{
_engineSystem = transform.GetComponentInParent<EngineSystem>();
}
private void Start()
{
_engineSystem.updateSpeedEvent.AddListener(OnSpeedUpdate);
}
private void OnSpeedUpdate(float originSpeed, float speedScale)
{
// 处理齿轮速度
foreach (var gear in engineGears)
{
gear.SetSpeedScale(speedScale * _engineSystem.engineConfig.gearSpeed);
}
}
}
[Serializable]
public struct EngineGear
{
public Renderer renderer;
public float speedRadio;
private static readonly int UVRotateSpeed = Shader.PropertyToID("_UVRotateSpeed");
/// <summary>
/// 设置速度
/// </summary>
/// <param name="speedScale">基础速度</param>
public void SetSpeedScale(float speedScale)
{
renderer.material.SetFloat(UVRotateSpeed, speedRadio * speedScale);
}
}
}