Я программирую игру, и я попал в очень трудное положение. В основном у меня есть круг, и у меня есть 2 угла на этот круг. Угол 1 (A) - это точка, в которую я хочу направить угол 2 (B). Во время моей игры каждый кадр мне нужно проверять, нужно ли нам увеличивать или уменьшать значение моего угла на определенную величину (скорость), чтобы в конечном итоге достичь первого угла. У меня вопрос, как мне это сделать?
Я пытался сделать это, но, похоже, я не делаю это правильно.
bool increase = false;
float B = [self radiansToDegrees:tankAngle];
float A = [self radiansToDegrees:tankDestinationAngle];
float newAngle = B;
if(B < A) {
float C = B - (360 - A);
float D = A - B;
if(C < D) increase = false;
else increase = true;
} else if(B > A) {
float C = B - A;
float D = A - (360 - B);
if(C < D) increase = false;
else increase = true;
}
if(increase) {
newAngle += 1.0;
} else {
newAngle -= 1.0;
}
if(newAngle > 360.0) {
newAngle = 0 + (newAngle - 360.0);
} else if(newAngle < 0.0) {
newAngle = 360 + newAngle;
}
if(newAngle == 0) newAngle = 360;
newAngle = [self degreesToRadians:newAngle];
[self setTanksProperPositionRotation:newAngle];
Основной эффект, которого я пытаюсь достичь, - это когда пользователь создает новую точку, которая будет углом 1, угол 2 будет двигаться в направлении угла 1, выбирая самое быстрое направление. Я думаю, что потратил около 4 часов, чтобы понять это.