使用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