У меня возникли проблемы с пониманием некоторых математических операций в следующем руководстве:
Я не уверен, как понять смещение. Примерно в середине руководства Рэй использует следующий код:
UITouch * touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
// 2 - Set up initial location of projectile
SKSpriteNode * projectile = [SKSpriteNode spriteNodeWithImageNamed:@"projectile"];
projectile.position = self.player.position;
// 3- Determine offset of location to projectile
CGPoint offset = rwSub(location, projectile.position);
где rwSub
static inline CGPoint rwSub(CGPoint a, CGPoint b) {
return CGPointMake(a.x - b.x, a.y - b.y);
}
Я знаю, что этот код работает, но я его не понимаю. Я попробовал NSLogging точку касания и точку смещения, и они не образуют треугольник, как показано на рисунке:
(источник: raywenderlich.com)
Вот что я получил из своего вывода:
Touch Location
X: 549.000000 Y: 154.000000
Offset
X: 535.500000 Y: -6.000000
Это не формирует вектор в правильном направлении... но все же работает? Кто-нибудь может объяснить, как работает смещение?