Ios 我得到了一个“答案”;“你输了”;即使游戏还没有结束,游戏场景的更新方法也是如此
我无法理解我的逻辑有什么问题。它似乎工作得很好,直到我在应用程序中做了一些改变,用一些方法发现乌龟移动得太快 比赛开始后几秒钟内,我收到一个“你输了”的提示,计数上升。敌人没有碰过我的灵魂,但它还是失去了。为了解决这个问题,我在过去的24小时里绞尽脑汁 代码类似于Ray Wenderlich僵尸CongaIos 我得到了一个“答案”;“你输了”;即使游戏还没有结束,游戏场景的更新方法也是如此,ios,swift,game-development,Ios,Swift,Game Development,我无法理解我的逻辑有什么问题。它似乎工作得很好,直到我在应用程序中做了一些改变,用一些方法发现乌龟移动得太快 比赛开始后几秒钟内,我收到一个“你输了”的提示,计数上升。敌人没有碰过我的灵魂,但它还是失去了。为了解决这个问题,我在过去的24小时里绞尽脑汁 代码类似于Ray Wenderlich僵尸Conga override func update(currentTime: CFTimeInterval) { /* Called before each frame is rendered
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
if lastUpdatedtime > 0 {
dt = currentTime - lastUpdatedtime
} else {
dt = 0
}
lastUpdatedtime = currentTime
//println("\(dt*1000) milliseconds since last update")
//Tartuga.position = CGPoint(x: Tartuga.position.x + 4 , y: Tartuga.position.y)
boundsCheckTartuga()
rotateSprite(Tartuga, direction: CGPoint(x:22, y: 300),rotationRadiansPerSdec: 3)
//stopTartuga()
mandateFall()
if lives <= 0 && !game0ver {
gameOver = true
println("you lose!")
let reveal = SKTransition.flipHorizontalWithDuration(0.5)
}
覆盖函数更新(currentTime:CFTimeInterval){
/*在渲染每个帧之前调用*/
如果LastUpdateTime>0{
dt=当前时间-上次更新时间
}否则{
dt=0
}
LastUpdateTime=currentTime
//println(“上次更新后的\(dt*1000)毫秒”)
//Tartuga.position=CGPoint(x:Tartuga.position.x+4,y:Tartuga.position.y)
boundsCheckTartuga()
rotateSprite(塔尔图加,方向:CGPoint(x:22,y:300),RotationRadiasPersDec:3)
//stopTartuga()
mandateFall()
如果生活if,你的变量lifes
和game0ver
是在你的类中定义的(看起来就是这样),当它们被更改时,使用它们的didSet
钩子来获得通知。这样,你可以设置断点,也可以看到调用者,即:
var lives : Int { didSet { println("lives changed to: \(lives)") } }
最终,您可以看到生命
何时发生变化,并在“意外”设置的情况下跟踪游戏中的点。Srikanth19
我注意到上面给定代码中有两个不同的变量gameOver和game0ver。
这是粘贴问题时出现的问题还是您定义了两个不同的变量
如果您没有定义两个不同的变量,那么理想情况下应该会出现编译时错误
注:
如果您没有得到编译时错误,那么很有可能在两个实例中将其声明为复制粘贴错误
在您的声明中检查:
var game0ver:呸
在代码的其他部分(假设您使用了Ray Wenderlich提供的Zombie Conga代码),您可能使用了正确的变量,它给出了
瓦尔·加莫弗:呸
我已经尝试过Zombie Conga,也参考了代码,您的条件进入的一个原因是if条件变量中的值错误
请共享您的声明部分,或者让我知道您是否能够通过检查game0ver(和/或gameOver)中的值来解决此问题在您更改lifes
和game0ver
值的任何地方搜索您的代码。某个地方lifes
变为0或负值,并且gave0ver
为false。您可能希望检查更新的时间。检查调用频率和原因。显然,这是条件语句的要求,因此我很抱歉除非您在其他地方设置gameOver,否则我会猜测原因。感谢您快速注意到我的代码中的错误。这解决了我的问题。有两个变量,一个为true,另一个为false,导致了这种混乱。