Использование Sprite Kit Я пытаюсь установить SKPhysicsBody
, перемещающийся в соответствии с заданным углом, так что, если вы хотите, чтобы спрайт перемещался вправо, вы указали бы 1.571 радиан. Чтобы превратить указанный угол в скорость, я использую метод ниже для преобразования радианов в CGVector
. Версия ORIGINAL, которую я реализовал из памяти, имеет странный эффект смещения всех углов на 90 градусов. (Т.е. если 0 градусов используется спрайт перемещается вправо (так же, как это было бы, если вы указали 90 градусов)Преобразование угла радия в CGVector
. Вопрос:
Я установил это в новой версии путем замены dx
и dy
задания Мой вопрос почему это происходит, у меня это не так в оригинале (там, кажется, что другие делают это таким образом в Интернете) или есть какая-то причина, основанная на конкретную система координат используются.
// ORIGINAL
- (CGVector)convertAngleToVector:(CGFloat)radians {
CGVector vector;
vector.dx = cos(radians) * 10;
vector.dy = sin(radians) * 10;
NSLog(@"DX: %0.2f DY: %0.2f", vector.dx, vector.dy);
return vector;
}
// NEW, SWAPPED DX & DY
- (CGVector)convertAngleToVector:(CGFloat)radians {
CGVector vector;
vector.dy = cos(radians) * 10;
vector.dx = sin(radians) * 10;
NSLog(@"DX: %0.2f DY: %0.2f", vector.dx, vector.dy);
return vector;
}
ПРИМЕЧАНИЕ: также в часах Sprite Kit мутные вращения отрицательны, до сих пор convertAngleToVector
делает положительные вращения по часовой стрелке (т. 1.571 радиан прав, где он должен быть оставлен) Я мог бы просто сделать cos(radians*-1)
и sin(radians*-1)
, но может быть какая-то основная причина этого, основываясь на том, что я меняю dx и dy.
А я вижу, поэтому первоначальная реализация правильная? – fuzzygoat