using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Linq; public abstract class Tachometer : MonoBehaviour { private string inputID; // Config private float ticPerTurn; private float wheelDiameter; // Process private float distancePerTick; protected List impulses = new List(); public void SetPlayer(int playerID) { inputID = "WheelP" + (playerID + 1); LoadConfig(playerID); } private void LoadConfig(int playerID) { var gm = GameManager.Instance; ticPerTurn = gm.GetSensorsCount(playerID); wheelDiameter = gm.GetBikeWheelDiameter(playerID); distancePerTick = wheelDiameter * Mathf.PI / ticPerTurn; } private void RegisterTic() { Debug.Log("Register"); impulses.Add(Time.time); } public virtual float GetSpeed() { return -1f; } public float GetDistanceRun() { return distancePerTick * impulses.Count(); } void Start() { } void Update() { if (Input.GetButtonDown(inputID)) RegisterTic(); } }