Добрый день! Рисую через Line Renderer линию и пускаю объект по этому пути. Всё работает нормально за исключением дёрганья объекта на поворотах. Подскажите как убрать эти дёрганья и сделать повороты и вообще само движение объекта плавное и приятное для глаз. Спасибо. Код ниже и то, как у меня сейчас это работает
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
[SerializeField]
private LineRenderer lineRenderer;
private List<Vector3> linePoints = new List<Vector3>();
private int targetPointIndex = 0;
private Vector3 targetPoint;
private float lineLength;
private float elapsedTime;
private bool isMoving = false;
void Start()
{
lineRenderer = GetComponent<LineRenderer>();
}
void Update()
{
if (Input.GetMouseButton(0))
{
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePosition.z = 0;
linePoints.Add(mousePosition);
if (lineRenderer != null)
{
lineRenderer.positionCount = linePoints.Count;
lineRenderer.SetPosition(linePoints.Count - 1, mousePosition);
}
}
if (Input.GetMouseButtonUp(0))
{
lineLength = 0;
for (int i = 1; i < linePoints.Count; i++)
{
lineLength += Vector3.Distance(linePoints[i], linePoints[i - 1]);
}
targetPointIndex = 1;
targetPoint = linePoints[targetPointIndex];
transform.up = (targetPoint - transform.position).normalized;
isMoving = true;
}
if (isMoving && linePoints.Count > 1 && targetPointIndex < linePoints.Count)
{
Vector3 direction = (targetPoint - transform.position).normalized;
transform.up = direction;
transform.position += direction * speed * Time.deltaTime;
if (Vector3.Distance(transform.position, targetPoint) < 0.1f)
{
targetPointIndex++;
if (targetPointIndex < linePoints.Count)
{
targetPoint = linePoints[targetPointIndex];
transform.up = (targetPoint - transform.position).normalized;
}
}
}
}
}
Как это работает сейчас