如何检查SKSpriteNode的底部是否在当前可见场景内

时间:2014-01-20 03:11:10

标签: ios sprite-kit

我一直在查看这个精灵工具包文档中的图7-3:https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Actions/Actions.html但它让我很困惑。它们似乎给多个东西赋予相同的名称,例如相机/角色。

我处于默认的SKScene,MyScene类。在initWithSize中,我创建了一个SKNode *myWorld,就像文档建议的那样。然后,我有一系列方法将我的背景图像添加到myWorld。滚动效果很好,但我想要做的是当myWorld中的图像底部到达场景底部时停止垂直滚动。对于我的生活,我无法弄清楚如何引用myWorld的底部。对于场景的底部,我只是做

CGPoint sceneFarBottomSide = CGPointMake(0, -self.size.height/2);

其中self.anhorPoint设置为[0.5,0.5]。

如何参考myWorld的底部?

2 个答案:

答案 0 :(得分:1)

myWorld的边缘是你设定的任何东西。换句话说,myWorld是一个本身不是视图或精灵的节点。它只是一个包含精灵或形状子对象的对象(例如,SKSpriteNodes或SKShapeNodes)。当您将精灵添加到myWorld时,请跟踪他们的位置。然后使用他们的位置来定义myWorld的“大小”。您可以使用此大小信息以及myWorld.position来了解myWorld的(底部)边缘何时出现。

答案 1 :(得分:0)

最终变得非常容易解决。感谢安德烈向我指出了关于冒险游戏的Apple文档,这就是真正让我失望并清除了我的一些理解。以下是获得我想要的行为的几行代码:

// Move world
if (monkeyPosition.y > 0 && monkeyPosition.x > 0) {
    [myWorld setPosition:CGPointMake(-monkeyPosition.x, -monkeyPosition.y)];
} else if (monkeyPosition.y > 0 && monkeyPosition.x < 0) {
    [myWorld setPosition:CGPointMake(0, -monkeyPosition.y)];
}