我正在尝试构建一个 SpriteKit 游戏,该游戏涉及带有可以放大和缩小的物理主体的关卡。物理世界的行为不像我预期的那样,当缩放级别改变时会导致奇怪的事情发生。
具有物理实体的节点动画并按预期运行。缩放关卡是通过捏合手势来处理的,该手势正在调整包含所有游戏元素的单个“世界节点”的比例。这是一种方便的处理方式,因为缩放场景似乎会做可怕的事情,并且可以轻松地为世界节点顶部的任何游戏界面元素添加单独的未缩放节点。
缩放的工作原理如下:
- (void) handlePinchGesture:(UIPinchGestureRecognizer *) gesture {
if (gesture.state == UIGestureRecognizerStateChanged) {
[self.worldNode runAction:[SKAction scaleBy:gesture.scale duration:0.0]];
gesture.scale = 1;
}
}
在正常缩放级别时,一切都很好,并且在视觉上,在不同的缩放级别下一切看起来也很好。问题是当缩放改变时,物理实体继续以相同的速度移动,而不是相对于其他物体的相同速度。结果是当缩小以查看更多场景时,一切都移动得更快。
这似乎是物理世界仅连接到场景并且不知道“世界节点”的调整比例这一事实的副作用。物理体不应该在它们的相对空间中继续以相同的速度移动节点吗?
任何人都可以提供任何关于 SpriteKit 的行为方式的见解,或者如何解决这个问题?