Вместо использования if, было бы лучше написать «уравнение», которое даст вам результаты, которые вы хотите? (в тех случаях, когда это имеет смысл) - PullRequest
0 голосов
/ 25 июня 2018

Вместо:

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.

1 Ответ

0 голосов
/ 27 июня 2018

Я бы ожидал, что вы приведете реальный пример, о котором идет речь, или просто не беспокойтесь об этом, если только вы не захотите сделать что-то помимо if/else. Ваш оригинальный код в порядке. Однако это можно записать более коротким способом. Используется оператор ternary.

float dotProduct = Vector3.Dot(dir, transform.right);
int front = dotProduct > 0 ? 1 : -1;
int back = dotProduct < 0 ? 1 : -1;
Rotate(front, back, angle);

Вы видите только 4 строки. Почти каждый программист знает троичный оператор. Так что этот новый код не представляет никакой сложности для ваших коллег. На самом деле это чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...