我正在尝试制作一个SpriteKit游戏,玩家可以在其中拖动精灵组,但是我不知道如何让精灵跟随鼠标光标。使用SpriteKit样板,我得到以下信息:
这是我如何移动“您好,世界!”的相关逻辑。 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/