Спрайты в Unity являются (обычно, если не всегда) нормальными к их локальному направлению forward
.Вот почему установка их локального направления вперед в направлении, перпендикулярном направлению орфографической камеры, приводит к тому, что они становятся невидимыми.
Из изображений, которыми вы поделились в других ответах, кажется, что вам нужно повернуть локальное положение персонажа.«вверх» в противоположном направлении, в котором они движутся, сохраняя при этом локальное «прямое» направление персонажа, указывающее в глобальном направлении вперед.
Вы можете использовать Quaternion.LookRotation
, чтобы сделать это, хотя вам нужно быть немного креативным с параметрами, указав направление, с которым вы хотите отойти, как параметр up
и глобальный forward
в качестве прямого параметра.
coroutineAllowed = false;
Vector2 p0 = routelist[routeIndex].routes[routeNumber].GetChild(0).position;
Vector2 p1 = routelist[routeIndex].routes[routeNumber].GetChild(1).position;
Vector2 p2 = routelist[routeIndex].routes[routeNumber].GetChild(2).position;
Vector2 p3 = routelist[routeIndex].routes[routeNumber].GetChild(3).position;
while (tParam < 1)
{
tParam += Time.deltaTime * speedModifier;
Vector3 fromPosition = transform.position;
characterPosition = Mathf.Pow(1 - tParam, 3) * p0 +
3 * Mathf.Pow(1 - tParam, 2) * tParam * p1 +
3 * (1 - tParam) * Mathf.Pow(tParam, 2) * p2 +
Mathf.Pow(tParam, 3) * p3;
transform.position = characterPosition;
Vector3 newLocalUpDirection = fromPosition - transform.position;
transform.rotation = Quaternion.LookRotation(Vector3.forward, newLocalUpDirection);
yield return new WaitForEndOfFrame();
}