Verwenden von Sprite Kit Ich versuche, eine SKPhysicsBody
Bewegung entsprechend einem bestimmten Winkel einzustellen. Wenn Sie zum Beispiel das Sprite nach rechts bewegen möchten, geben Sie 1.571 Radian an. Um den angegebenen Winkel in eine Geschwindigkeit umzuwandeln, verwende ich die Methode unten, um Radianten in eine CGVector
umzuwandeln. Die ORIGINAL-Version, die ich aus dem Speicher implementiert habe, hat den seltsamen Effekt, alle Winkel um 90 Grad zu versetzen. (Dh wenn 0 Grad die Sprite bewegt sich nach rechts verwendet wird (wie es wäre, wenn Sie angegeben 90Grad)Konvertieren des Bogenwinkels in CGVector
. Frage:
ich dies in der neuen Version behoben haben, indem sie die dx
und dy
Zuweisungen Swapping Meine Frage ist, warum dies geschieht, muss ich es falsch, im Original (es scheinen andere zu sein, dass es so auf dem Netz zu tun) oder ist es aus irgendeinem Grund auf der Grundlage des bestimmten Koordinatensystem verwendet wird.
// 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;
}
HINWEIS: auch in Sprite Kit Uhr weise Rotationen sind negativ, so weit convertAngleToVector
macht positive im Uhrzeigersinn Umdrehungen (d. h. 1.571 Radian ist richtig, wo es gelassen werden sollte) Ich könnte einfach cos(radians*-1)
und sin(radians*-1)
tun, aber es könnte einige zugrunde liegenden Grund dafür basierend auf mir Austausch von dx und dy.
Ah ich sehe, also ist die ursprüngliche Implementierung dann richtig? – fuzzygoat