我正在尝试制作一个 SpriteKit 游戏,玩家可以在其中拖动 Sprite 组,但我不知道如何让 Sprite 跟随鼠标光标。使用 SpriteKit 样板,我得到了这个:
以下是我如何移动“Hello, world!”的相关逻辑。 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
变量,但这显然是一种 hack。
最佳答案
NSEvent在SpriteKit中还有一个方法,- (CGPoint)locationInNode:(SKNode *)node
。通过使用它,我能够获得与鼠标一起移动 SKNode 的正确偏移值。
关于objective-c - 为什么 mouseDragged 位置落后于实际鼠标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219182/