Начал ИД вроде

This commit is contained in:
ThomasCharester committed 2026-02-06 22:52:36 +03:00
1 parent cd56b1969c
commit f557c58c9d
35 files changed
+683 -1484

No files matched your search

@@ -0,0 +1,98 @@
using System.Collections.Generic;
using Code.Example.Race.Racer.AI.ID;
using UnityEngine;
namespace Code.Example.Race.Racer.AI
{
public class AIRacerID : Racer
{
public override void SetData(RacerData data)
{
Data = data;
_velocity = Vector3.zero;
_steering = new Steering();
}
public override void Initialize(List<Transform> waypoints)
{
Waypoints = waypoints;
}
public override void NextWaypoint()
{
if(CurrentWaypointIndex >= Waypoints.Count) CurrentWaypointIndex = 0;
CurrentWaypointIndex++;
}
public override void StartRacer()
{
_running = true;
}
public override void StopRacer()
{
_running = false;
}
[SerializeField] private AgentBehaviour agent;
private float _orientation;
private float _rotation;
private Vector3 _velocity;
private Steering _steering;
private bool _running;
private float NormalizeAngle(float angle)
{
switch (angle)
{
case > 360.0f:
{
while (angle > 360.0f) angle -= 360.0f;
break;
}
case < 0.0f:
{
while (angle < 0.0f) angle += 360.0f;
break;
}
}
return angle;
}
public virtual void Update()
{
if (!_running) return;
var displacement = _velocity * Time.deltaTime;
_orientation += _rotation * Time.deltaTime;
_orientation = NormalizeAngle(_orientation);
transform.Translate(displacement, Space.World);
transform.Rotate(Vector3.up, _orientation);
}
public virtual void LateUpdate()
{
if (!_running) return;
_steering = agent.GetSteering(Waypoints[CurrentWaypointIndex]);
_velocity += _steering.linear * Time.deltaTime;
_rotation += _steering.angular * Time.deltaTime;
if (_velocity.magnitude > Data.speed)
{
_velocity = _velocity.normalized * Data.speed;
}
if (_steering.angular == 0.0f)
{
_rotation = 0.0f;
}
if (_steering.linear.sqrMagnitude == 0.0f)
{
_velocity = Vector3.zero;
}
}
}
}