You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Driftology/Assets/Simple Car Controller/Scripts/SCC_Dashboard.cs

69 lines
1.9 KiB
C#

2 months ago
//----------------------------------------------
// Simple Car Controller
//
// Copyright © 2014 - 2023 BoneCracker Games
// http://www.bonecrackergames.com
//
//----------------------------------------------
using UnityEngine;
using System.Collections;
/// <summary>
/// Handling UI dashboard. RPM and KMH gauges.
/// </summary>
[AddComponentMenu("BoneCracker Games/Simple Car Controller/SCC Dashboard")]
public class SCC_Dashboard : MonoBehaviour {
public SCC_Drivetrain car; // Target vehicle.
// RPM and KMH.
private float rpm = 0f;
private float kmh = 0f;
// Needles.
public RectTransform RPMNeedle;
public RectTransform KMHNeedle;
// Multipliers of the needles for adjusting min and max rotations.
public float RPMNeedleMultiplier = 1.2f;
public float KMHNeedleMultiplier = 1.2f;
// Original angles of the needles.
private float orgRPMNeedleAngle = 0f;
private float orgKMHNeedleAngle = 0f;
private void Awake() {
// Getting original angle values of the needles.
orgRPMNeedleAngle = RPMNeedle.transform.localEulerAngles.z;
orgKMHNeedleAngle = KMHNeedle.transform.localEulerAngles.z;
}
private void Update() {
// If there is no target vehicle, return.
if (!car) {
rpm = 0f;
kmh = 0f;
} else {
rpm = car.currentEngineRPM * RPMNeedleMultiplier;
kmh = car.speed * KMHNeedleMultiplier;
}
// Rotating the needles smoothly.
Quaternion target = Quaternion.Euler(0f, 0f, orgKMHNeedleAngle - kmh);
KMHNeedle.rotation = Quaternion.Slerp(KMHNeedle.rotation, target, Time.deltaTime * 2f);
Quaternion target2 = Quaternion.Euler(0f, 0f, orgRPMNeedleAngle - (rpm / 40f));
RPMNeedle.rotation = Quaternion.Slerp(RPMNeedle.rotation, target2, Time.deltaTime * 2f);
}
}