gpt4 book ai didi

swift - 在 Sprite Kit 中死亡后显示奖牌

转载 作者:行者123 更新时间:2023-11-28 08:35:46 25 4
gpt4 key购买 nike

在我的游戏中,我希望像 Flappy Bird 那样拥有奖牌。所以在玩家死后它应该显示正确的奖章。我制作了这段代码:

if self.score > 4{
let platinummedalTexture = SKTexture(imageNamed: "medal_platinum.png")
self.platinummedal = SKSpriteNode(texture: platinummedalTexture)
self.platinummedal.setScale(1)
self.platinummedal.zPosition = 120
self.platinummedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10)
self.addChild(self.platinummedal)
}

if self.score > 3{
let goldmedalTexture = SKTexture(imageNamed: "medal_gold.png")
self.goldmedal = SKSpriteNode(texture: goldmedalTexture)
self.goldmedal.setScale(1)
self.goldmedal.zPosition = 120
self.goldmedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10)
self.addChild(self.goldmedal)

}

if self.score > 2{
let silvermedalTexture = SKTexture(imageNamed: "medal_silver.png")
self.silvermedal = SKSpriteNode(texture: silvermedalTexture)
self.silvermedal.setScale(1)
self.silvermedal.zPosition = 120
self.silvermedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10)
self.addChild(self.silvermedal)
}
if self.score > 1{
let bronzemedalTexture = SKTexture(imageNamed: "medal_bronze.png")
self.bronzemedal = SKSpriteNode(texture: bronzemedalTexture)
self.bronzemedal.setScale(1)
self.bronzemedal.zPosition = 120
self.bronzemedal.position = CGPointMake(CGRectGetMidX(self.frame)-65, CGRectGetMidY(self.frame)-0 - 10)
self.addChild(self.bronzemedal)
}

在游戏中获得奖牌的分数更高,但我把它放在这个数字上进行测试。所以我的问题是,如果我得到 5 分或更高的分数,它应该显示白金奖章,但它只在 4 分及更高分后显示金牌。其他人工作得很好。 (2 = 铜牌,3 = 银牌,4 = 金牌,5 = 金牌 -> 错误)

我不知道如何解决这个问题,也许你们中的某个人可以帮助我。

最佳答案

可能有更好的方法来做到这一点,但由于您想知道哪里出了问题,所以这个答案将集中在您的结构上。基本上你与黄金和白金有冲突,因为没有什么能阻止 if 语句继续下降到 4,即使分数高于 4。我建议在您的第一个 if 之后使用 else if 语句:

var score : Int = 5

if score >= 5 {
print("platinum")
}
else if score >= 4 {
print("gold")
}
else if score >= 3 {
print("silver")
}
else if score <= 2 {
print("bronze")
}

此外,您应该将小于/大于与等于一起使用,以确保您为适当的分数设置了正确的奖牌。我个人喜欢自下而上的方法(这与您在上面看到的正好相反),但在这方面确实是个人偏好。这是一个例子:

var score : Int = 5

if score <= 2 {
print("bronze")
}
else if score <= 3 {
print("silver")
}
else if score <= 4 {
print("gold")
}
else if score >= 5 {
print("platinum")
}

关于swift - 在 Sprite Kit 中死亡后显示奖牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37769294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com