Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 检查玩家是否达到了边距_Swift_Xcode - Fatal编程技术网

Swift 检查玩家是否达到了边距

Swift 检查玩家是否达到了边距,swift,xcode,Swift,Xcode,我正在用swift做一个小游戏,一个蛇游戏。我已经尝试过用python做这个游戏了,它成功了!为了运行游戏,我使用了while循环。通过这种方式,我可以随时改变球员的位置,检查他是否达到了边距。现在我必须再次这样做,但我不知道如何告诉我的程序检查所有的时间,如果蛇已经击中边缘或他自己。 我应该这样做 if player.position.x <= 0 || player.position.x >= self.size.width || player.position.y <=

我正在用swift做一个小游戏,一个蛇游戏。我已经尝试过用python做这个游戏了,它成功了!为了运行游戏,我使用了while循环。通过这种方式,我可以随时改变球员的位置,检查他是否达到了边距。现在我必须再次这样做,但我不知道如何告诉我的程序检查所有的时间,如果蛇已经击中边缘或他自己。 我应该这样做

if player.position.x <= 0 || player.position.x >= self.size.width || player.position.y <= 0 || player.position >= self.size.height{
   death()
}
如果player.position.x=self.size.width | | player.position.y=self.size.height{
死亡()
}
因此,如果x轴或y轴上的播放器位置的大小大于屏幕大小或小于0,则调用函数“death()。
如果我必须用python来做这件事,我会把所有这些代码放在“main while循环”中。但是有了斯威夫特,我就没时间用了。。。有什么建议吗

如果我理解正确的话:您正在寻找Swift中的一个循环,它为您的游戏进行所有计算和绘图。您有一些关于Swift中循环的教程。事实上,您可以使用while循环来回答您的问题。我希望我能帮上忙。

使用SpriteKit。您可以在创建新项目时选择此选项,选择游戏,然后选择SpriteKit。这是苹果制作游戏的框架。它有你需要的东西,而且速度更快——不要用UIKit制作游戏

在SpriteKit中,您有
update()
方法,作为
SKScene
的一部分。不要在循环时使用
。这些都是非常不可靠的,蛇的速度会因设备而异

下面是一小段代码,可以帮助您开始使用
SKScene

import SpriteKit


class Scene: SKScene {

    let timeDifference: TimeInterval = 0.5  // The snake will move 2 times per second (1 / timeDifference)
    var lastTime: TimeInterval = 0

    let snakeNode = SKSpriteNode(color: .green, size: CGSize(width: 20, height: 20))


    override func update(_ currentTime: TimeInterval) {
        if currentTime > lastTime + timeDifference {
            lastTime = currentTime

            // Move snake node (use an SKSpriteNode or SKShapeNode)
        }
    }
}

完成所有这些之后,您最终可以检查snake是否超出了此
update()
循环中的某些边距或任何内容。尽量减少
update()
循环中的代码,因为它通常以每秒60次的速度运行。

您使用的是SpriteKit吗?谢谢,这正是我所需要的^-^@Jacopo很高兴它成功了:)如果您需要更多帮助才能让它正常工作,如果您遇到困难,请告诉我是的,我很感激:)再次感谢你的帮助^-^