SKAction moveTo:duration: неправильно реагирует на значение CGPoint касания

Я использую SpriteKit для создания игры, где у меня есть самолет, который я хочу перемещать при касании. Идея состоит в том, чтобы переместить плоскость в то место, где коснулся пользователь.

UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];

CGPoint moveToLocation = point;

SKAction *planeMove = [SKAction moveTo:moveToLocation duration:0.5];

[_plane runAction:planeMove]; // _plane represents the plane sprite.


NSLog(@"Touch Point: %@ ",NSStringFromCGPoint(point));
NSLog(@"Plane Location: %@", NSStringFromCGPoint(_plane.position));

Приведенный выше код дает нежелательный результат с разными значениями Touch Point и Plane Location. Следовательно, самолет после касания находится далеко от точки, в которой он должен быть. Например, значения, которые я получаю в NSLog:

Touch Point: {391, 743}
Location: {393, 672}

person Farhan Misarwala    schedule 30.01.2015    source источник


Ответы (1)


измените вторую строку на

CGPoint point = [touch locationInNode:self]; 
person hamobi    schedule 30.01.2015