我附近开发一个游戏,长话短说结束,游戏也就结束了,当一个物体撞向的障碍之一。我已经做好了这部分工作,并且游戏本身运行得非常好,但是我还想再增加一步。

我想在应用程序中购买“玩法”功能,也就是说,从用户游戏最初结束的地方开始,以便他们可以继续。总体而言,我对应用程序内购买尚可,但是我想我想知道的是,如何使人们能够在应用程序内购买后继续玩游戏?我只是在寻找可以建立的基础知识。

我是Stack的新手,因为我今天才创建一个帐户(但是我已经编程了一段时间,并且该站点已经为我提供了很多次帮助),所以很抱歉,如果有重复的线程在其他地方制作。我环顾四周为一小时左右决定后前(和谷歌是没有帮助)。

最佳答案

作为一般的堆栈溢出规则,您应该始终发布一些自己的代码或使用过的代码。

我其实也期待一个playOn按钮在我的游戏整合。现在,我还没有真正找到这个完美的解决方案还没有,但希望这可以帮助您在正确的轨道上。

步骤1:
您如何根据场景对游戏进行编程?
你只是暂停了现场,你暂停节点或者是你去除场景中所有的孩子吗?

我暂停场景的方法是创建一个worldNode,然后将需要暂停的所有对象添加到worldNode。
你可以阅读我的两个回答问题的更详细

Keeping the game paused after app become active?

Sprite moves two places after being paused and then unpaused

这样,当我暂停游戏时,我实际上并没有暂停场景,这使我可以更加灵活地添加pauseMenus等。此外,它似乎比暂停skView更流畅。

我也呼吁暂停当玩家死了,这意味着我可以继续从他们离开,如果我叫简历这里的敌人/障碍。
所以我的游戏结束的方法看起来像这样

func gameOver() {
    pause() // call pause method to pause worldNode etc

    //show game over screen including playOn button
}


第2步:
现在关于重生玩家,这取决于他的位置,他可以移动多远等。
如果您的播放器大多是在同一地区比你可能只需要手动重生各位玩家一旦“PlayOn”被按下,比恢复比赛,就好像它只是暂停。

因此,一旦按下playOn按钮,您就可以调用类似的方法

func playOnPressed() {

    // Remove current player
    // Doesnt have to be called, you could just change the position
    player.removeFromParent()

    // Add player manually again to scene or just reposition him
    ...

    // Remove obstacle that killed player
    // haven't found a great solution for this yet

    // You could make the player not receive damage for 5 seconds to make sure you dont die immediately after playOn is pressed

    // Call resume method, maybe with delay if needed
    resume()
}


如果您的播放位置,可能是所有在屏幕上,在我的比赛,我一直在玩弄一些事情至今。

我创建了一个position属性来跟踪玩家的位置

playerPosition = CGPoint!


而不是在我的场景更新方法,我不断更新此方法将
玩家的实际位置。

override func update(currentTime: CFTimeInterval) {
    if gameOver = false {
          playerPosition = player.position
    }
}


我比以前一直在玩“ playOnPressed”方法,

func playOnPressed() {


    // Remove current player
    //Doesnt have to be called, you could just change the positioon
    player.removeFromParent()

    // Add player manually again to scene or just reposition him
    ...
    player = SKSpriteNode(...
    player.position.x = playerPosition.x - 40 // adjust this so it doesnt spawn where he died but maybe a bit further back
    player.position.y = playerPosition.y // adjust if needed

    // Remove obstacle that killed player
    // haven't found a great solution for this yet

    // You could make the player not receive damage for 5 seconds to make sure you dont die immediately after playOn is pressed

    // Call resume method, with delay if needed
    resume()
}


我希望这可以帮助你玩弄你的playOn按钮后,如果有人有更好的办法,我还希望它极大。

关于ios - “播放”功能是应用内购买吗? SpriteKit/swift ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34802530/

10-09 13:12