当前位置 : 主页 > 手机开发 > ios >

ios – 如何在SpriteKit中模拟大于屏幕的世界?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在寻找适当的SpriteKit方法来处理可滚动的世界.请考虑以下图像: 在这个人为的例子中,世界边界是虚线,蓝点可以在这些边界内的任何地方移动.然而,在任何给定点,该世界的一部分可
我正在寻找适当的SpriteKit方法来处理可滚动的世界.请考虑以下图像:

在这个人为的例子中,世界边界是虚线,蓝点可以在这些边界内的任何地方移动.然而,在任何给定点,该世界的一部分可以在屏幕外存在,如图像所示.我想知道如何将蓝点移动到“世界”的任何地方,同时保持相机静止在蓝点上.

This is Adventure, a sprite kit game by apple to demonstrate the point I made below. Read through the docs, they explain everything

这是我目前无法找到的一个很好的答案.基本的想法是这样的:

>在场景中添加“世界”节点.您可以给它一个宽度/高度大于屏幕尺寸.
>当你’移动’角色(或蓝点)时,你实际上移动了你的世界节点,但方向相反,这给人的印象是你正在移动.

这样屏幕总是以蓝点为中心,而你周围的世界会移动

下面是我刚刚进行实验的一个例子:

override func didMoveToView(view: SKView) {
        self.anchorPoint = CGPointMake(0.5, 0.5)
        //self.size = CGSizeMake(600, 600)

        // Add world
        world = SKShapeNode(rectOfSize: CGSize(width: 500, height: 500))
        world.fillColor = SKColor.whiteColor()
        world.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5)
        world.physicsBody?.usesPreciseCollisionDetection = true
        self.addChild(world)
}

override func update(currentTime: CFTimeInterval) {
        world.position.x = -player.position.x
        world.position.y = -player.position.y
}
网友评论