34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
using UnityEngine;
|
|
|
|
public class ObjectBanking : MonoBehaviour
|
|
{
|
|
[Header("Banking Configuration")]
|
|
[Tooltip("The speed at which the object banks left or right.")]
|
|
public float bankingSpeed = 5f;
|
|
|
|
[Tooltip("The maximum angle the object can bank to either side.")]
|
|
public float maxBankingAngle = 30f;
|
|
|
|
public RaceManager raceManager;
|
|
|
|
// Internal variable to keep track of current bank angle
|
|
private float currentBankAngle = 0f;
|
|
|
|
void Update()
|
|
{
|
|
if (!raceManager.raceFinished) {
|
|
// Get input from Horizontal axis (e.g., keyboard or controller)
|
|
float horizontalInput = Input.GetAxis("Horizontal");
|
|
|
|
// Target angle is proportional to input and max banking angle
|
|
float targetBankAngle = horizontalInput * maxBankingAngle;
|
|
|
|
// Smoothly interpolate current angle towards the target
|
|
currentBankAngle = Mathf.Lerp(currentBankAngle, targetBankAngle, Time.deltaTime * bankingSpeed);
|
|
|
|
// Apply the rotation (banking along the Z-axis)
|
|
transform.localRotation = Quaternion.Euler(0f, 0f, -currentBankAngle);
|
|
}
|
|
}
|
|
}
|