我正在尝试制作一个SpriteKit游戏,玩家可以在其中拖动精灵组,但是我不知道如何让精灵跟随鼠标光标。使用SpriteKit样板,我得到以下信息:

objective-c - 为什么mouseDragged位置落后于实际鼠标?-LMLPHP

这是我如何移动“您好,世界!”的相关逻辑。 SKNode babies中的精灵

SKNode *babies;

-(void)mouseDown:(NSEvent *)theEvent {
    dragStart = [theEvent locationInWindow];
    babiesStart = babies.position;
}

-(void)mouseDragged:(NSEvent *)theEvent {
    CGPoint translation = CGPointMake([theEvent locationInWindow].x - dragStart.x,
                                      [theEvent locationInWindow].y - dragStart.y);
    float adjust = 1.0;
    babies.position = CGPointMake(babiesStart.x + translation.x * adjust,
                                  babiesStart.y + translation.y * adjust);
}


我尝试了许多不同的方法,例如theEvent上的deltaX和Y,但得到的结果相同。我发现的唯一解决方案是使用adjust变量,但这显然是黑客。

最佳答案

NSEvent在SpriteKit中还有另一个方法- (CGPoint)locationInNode:(SKNode *)node。通过使用此选项,我能够获得正确的偏移值,以便与鼠标一起移动SKNode。

关于objective-c - 为什么mouseDragged位置落后于实际鼠标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21219182/

10-16 20:28