using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputManager : MonoBehaviour
{
internal enum Driver
{
AI,
Keyboard
}
[Range(0, 10)] public int aiDistanceOffset;
[Range(0, 5)] public float aiSteerForce;
[SerializeField] private Driver driverController;
public float vertical;
public float horizontal;
public bool handbrake;
public bool boosting;
public TrackWayPoints waypoints;
public Transform currentWaypoint;
public List<Transform> nodes = new List<Transform>();
private void Awake()
{
waypoints = GameObject.FindWithTag("path").GetComponent<TrackWayPoints>();
nodes = waypoints.nodes;
}
private void Update()
{
switch (driverController)
{
case Driver.AI:
AIDriver();
break;
case Driver.Keyboard:
KeyboardDrive();
break;
}
}
private void AIDriver()
{
vertical = 0.3f;
AISteer();
}
private void KeyboardDrive()
{
vertical = Input.GetAxis("Vertical");
horizontal = Input.GetAxis("Horizontal");
handbrake = Input.GetButton("Jump");
boosting = Input.GetKey(KeyCode.LeftShift);
calculateDistanceOfWaypoints();
}
private void calculateDistanceOfWaypoints()
{
Vector3 position = transform.position;
float distance = Mathf.Infinity;
for (int i = 0; i < nodes.Count; i++)
{
Vector3 difference = nodes[i].position - position;
float currentDistance = difference.magnitude;
if (currentDistance < distance)
{
currentWaypoint = nodes[i];
distance = currentDistance;
}
}
}
private void AISteer()
{
if (currentWaypoint != null)
{
Vector3 relative = currentWaypoint.position - transform.position;
relative.y = 0f; // Mantén la misma altura
Quaternion rotationToWaypoint = Quaternion.LookRotation(relative);
Quaternion localRotation = Quaternion.Inverse(transform.rotation) * rotationToWaypoint;
// Obtén el ángulo de rotación en el eje Y
float angle = localRotation.eulerAngles.y;
// Ajusta la dirección de giro en función del ángulo
horizontal = Mathf.Clamp(angle / 180f, -1f, 1f) * aiSteerForce;
}
}
private void OnDrawGizmos()
{
if (currentWaypoint != null)
{
Gizmos.DrawWireSphere(currentWaypoint.position, 3);
}
}
}