Пожалуйста, проверьте GIF, чтобы увидеть пример,
Я хочу, чтобы красный шар копировал движение зеленых шаров, но должен знать разницу в направлении. Значение, если зеленый шар движется вперед 5 единиц, а затем движется влево на 5 единиц. Зеленый шар должен двигаться вперед и влево, но в зависимости от направления движения вперед. Белая линия указывает на переднюю сторону для каждого шара.
Ниже приведен код для воссоздания текущей ситуации, как показано на Gif. Я не мог обернуть свой ум вокруг, как решить это.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class CalculateMovement : MonoBehaviour
{
[SerializeField] Transform MyOrigin;
[SerializeField] Transform MyPosition;
[SerializeField] Transform CopyCat;
[SerializeField] Transform CopyCatOrigin;
[SerializeField] float Distance;
[SerializeField] Vector3 rawDirection;
private void Update()
{
rawDirection = (MyPosition.position - MyOrigin.position).normalized;
Distance = Vector3.Distance(MyOrigin.position, MyPosition.position);
if (CopyCat)
{
CopyCat.position = rawDirection * Distance + CopyCatOrigin.position;
}
}
private void OnDrawGizmos()
{
Gizmos.DrawLine(transform.position, transform.position + transform.forward);
Gizmos.DrawLine(CopyCat.position, CopyCat.position + CopyCat.forward);
}
}