gpt4 book ai didi

swift - 一次一个分数,更新方法

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

我正在使用 SpriteKit 创建一个简单的游戏(主要用于学习),我遇到了一个关于加分的问题。一些背景:我正在检查 Sprite (SKShapeNode) 是否包含另一个 Sprite ,如果为真,我正在检查它们的颜色,如果颜色相同,玩家应该得到 1 分。我写了这个函数:

    func onMatch(){
for ring in mColorRings {
if(mPlayer.contains(ring.position)){
if mPlayer.fillColor.isEqual(ring.fillColor) {
score += 1
mScoreLbl.text = "\(score)"
}
}
}
}

有效,问题是,我在更新方法中调用此函数。由于更新方法运行很多,它会调用我的函数很多时间,只要 mPlayer 包含 ring,它就会为播放器添加 1 分。我怎样才能避免这种情况?

最佳答案

这取决于您的游戏机制。如果戒指应该给你一次分数然后消失,你可以在测试中安全地移除它。如果你想让戒指留在原处并可能在以后重复使用,你可以在戒指类中添加一个 bool 值,称为“scoreGiven”,然后重做你的 if 测试,如下所示:

func onMatch(){
for ring in mColorRings {
if !ring.scoreGiven{
if(mPlayer.contains(ring.position)){
if mPlayer.fillColor.isEqual(ring.fillColor) {
score += 1
mScoreLbl.text = "\(score)"
ring.scoreGiven = true
}
}
}else if(!mPlayer.contains(ring.position)){
ring.scoreGiven = false
}
}

这只是一个示例,但请注意更新后的 if 语句中的“not”

关于swift - 一次一个分数,更新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41596406/

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