Superconductor-Racing-League/Assets/Scripts/Kart/SpeedometerController.cs

46 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using TMPro; // Import TextMeshPro namespace
public class SpeedometerController : MonoBehaviour
{
public Image fullSpeedometerImage; // Reference to the full speedometer UI
public TextMeshProUGUI speedText; // Reference to the speed display (TextMeshPro)
public GameObject playerVehicle; // Reference to the player's vehicle
private Rigidbody vehicleRigidbody; // Reference to the vehicle's Rigidbody
public float maxSpeed = 10f; // Maximum speed (adjust as needed)
void Start()
{
// Get the Rigidbody from the assigned player GameObject
if (playerVehicle != null)
{
vehicleRigidbody = playerVehicle.GetComponent<Rigidbody>();
if (vehicleRigidbody == null)
{
Debug.LogError("No Rigidbody found on the player GameObject! Please make sure it has one.");
}
}
else
{
Debug.LogError("Player GameObject is not assigned in the Inspector!");
}
}
void Update()
{
// Get the vehicle's speed in units per second (you can customize if needed)
float speed = vehicleRigidbody.linearVelocity.magnitude; // Convert to km/h if needed
// Clamp speed to maxSpeed
float clampedSpeed = Mathf.Clamp(speed, 0, maxSpeed);
// Update the fill amount (0 to 1)
fullSpeedometerImage.fillAmount = clampedSpeed / maxSpeed;
// Update the speed text (e.g., "0V" to "120V")
speedText.text = Mathf.RoundToInt(clampedSpeed) + "V";
}
}