我有一个 SKSpriteNode 作为 SKScene 的子节点,但精灵节点比场景大得多,我需要用户能够手动滚动精灵节点以查看所有内容(这是一张巨大的地图)。我正在使用 SKAction moveByX: y: Duration: 方法,并且 moveByX 部分按预期工作。但是,Y pat 的移动会导致地图以非常快的速度从屏幕底部射出。这是我在 touchesMoved 中的代码:
CGFloat xDiff = location.x - prevLocation.x;
CGFloat yDiff = location.y - prevLocation.y;
SKAction *moveBy = [SKAction moveByX:xDiff y:yDiff duration:0];
if (YES) NSLog(@"%f, %f", xDiff, yDiff);
[map runAction:moveBy];
因此,此逻辑适用于 x 轴,但不适用于 y 轴。此外,如果我将 yDiff 更改为反向计算(prevLocation.y - location.y),我在 NSLog 输出中注意到 yDiff 在单个平移操作中是累积的,但 xDiff 不是。
我错过了什么?