我正在制作Sprite Kit / Swift游戏。我希望球在跌落和跳跃时做不同的事情。现在,如果跌落了,它还将使用底部的代码(用于跳跃的代码)

这是我正在使用的代码:

override func collisionWithBall(ball: SKNode) -> Bool {

        if ball.physicsBody?.velocity.dy < 0 {
            ball.physicsBody?.velocity = CGVector(dx: ball.physicsBody!.velocity.dx, dy: 500.0)

            if platformType == .Normal {
                self.removeFromParent()
            }

            if platformType == .Break {
                self.removeFromParent()
                ball.physicsBody?.velocity = CGVector(dx: ball.physicsBody!.velocity.dx, dy: 800.0)
            }
        }
        if ball.physicsBody?.velocity.dy > 0 {
        if platformType == .Break {
            NSUserDefaults.standardUserDefaults().setInteger(1, forKey: "nextValue")
            self.removeFromParent()
            ball.physicsBody?.velocity = CGVector(dx: ball.physicsBody!.velocity.dx, dy: -800.0)
        }
        }

        return false
    }


如果它跳了,我希望它仅在ball.physicsBody?.velocity.dy> 0时使用。当它掉落时,我只希望在ball.physicsBody?.velocity.dy
我该怎么做才能使其正常工作?

最佳答案

您必须将if语句更改为第二个条件使用else if。像这样:

if ball.physicsBody?.velocity.dy < 0 {
    // Handle falling here...
} else if if ball.physicsBody?.velocity.dy > 0 {
    // Handle jumping here...
}

关于ios - 在Sprite Kit游戏中检测下落和跳跃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34774717/

10-12 17:30