Вместо:
float dotProduct = Vector3.Dot(dir, transform.right);
int front = 0;
int back = 0;
if (dotProduct > 0)
{
// right
front = 1;
back = -1;
}
else if (dotProduct < 0)
{
// left
front = -1;
back = 1;
}
Rotate(front, back, angle);
Имея что-то вроде
float dotProduct = Vector3.Dot(dir, transform.right);
int front = Mathf.Abs(dotProduct) ...;
int back = Mathf.Abs(dotProduct) ...;
Rotate(front, back, angle);
Errh, я знаю, int front = Mathf.Abs(dotProduct) ...;
не даст мне ни 1, ни -1, но я думаю, вы понимаете, что яЯ думаю, вместо использования if, я бы «проходил» через уравнение, которое дало бы мне 1 или -1.