Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Ios 应用脉冲不正常工作_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 应用脉冲不正常工作

Ios 应用脉冲不正常工作,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我一直在开发一款游戏,其中彩色圆点(SpriteKitShapeNodes)从屏幕顶部下降到底部。以前,我使用SpriteKit重力让圆点落下,但我决定要改善落下的效果,并决定改用脉冲。出于某种奇怪的原因,这些点没有接收到脉冲或其他东西。这些点根本不动。感兴趣的是“更改[颜色]”功能 var Green = SKShapeNode() var Red = SKShapeNode() var Yellow = SKShapeNode() var Purple = SKShapeNode() var

我一直在开发一款游戏,其中彩色圆点(SpriteKitShapeNodes)从屏幕顶部下降到底部。以前,我使用SpriteKit重力让圆点落下,但我决定要改善落下的效果,并决定改用脉冲。出于某种奇怪的原因,这些点没有接收到脉冲或其他东西。这些点根本不动。感兴趣的是“更改[颜色]”功能

var Green = SKShapeNode()
var Red = SKShapeNode()
var Yellow = SKShapeNode()
var Purple = SKShapeNode()
var Blue = SKShapeNode()
var Green2 = SKShapeNode()
var Red2 = SKShapeNode()
var Yellow2 = SKShapeNode()
var Purple2 = SKShapeNode()
var Blue2 = SKShapeNode()
//var sparkEmitter = SKEmitterNode(fileNamed: "Animations/Spark")
let userDefaults = NSUserDefaults.standardUserDefaults()
var ScoreLabel:SKLabelNode!
var HighScoreLabel:SKLabelNode!
var RestartLabel:SKLabelNode!
var BackButton:SKSpriteNode!
var π = M_PI
var clickPlayer: AVAudioPlayer = AVAudioPlayer()
var hitPlayer: AVAudioPlayer = AVAudioPlayer()
var jumpPlayer: AVAudioPlayer = AVAudioPlayer()
var musicPlayer: AVAudioPlayer = AVAudioPlayer()
var pointPlayer: AVAudioPlayer = AVAudioPlayer()
var pop2Player: AVAudioPlayer = AVAudioPlayer()

var Background = SKSpriteNode()
var startTimer = NSTimer()


var CustomWidth: UInt32 = UInt32()

override func didMoveToView(view: SKView) {
    /* Setup your scene here */



    //Add this back in if you want the color needed to change every minute
    //var timer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: "update", userInfo: nil, repeats: true)

    CustomWidth = UInt32(frame.size.width - 300)
    print("Normal Width Is: \(frame.size.width)")
    print("Other Width Is: \(UIScreen.mainScreen().bounds.size.width)")
    print("Middle is: \(self.size.width / 2)")

    self.size.width = UIScreen.mainScreen().bounds.size.width
    self.size.height = UIScreen.mainScreen().bounds.size.height
    print("Width is now: \(self.size.width)")


    Background = SKSpriteNode(imageNamed: "images/edit/background")
    Background.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2 )
    Background.zPosition = -1.0

    self.addChild(Background)

    //Physics
    //self.physicsWorld.gravity = CGVector( dx: 0.0, dy: -0.2 )
    //self.physicsWorld.contactDelegate = self
    print(physicsWorld.speed)

    setupCircles()
    spawnCircles()

    changeColorNeeded()


func restartGame() {

    //self.physicsWorld.speed = 1.0
    spawnCircles()
    changeColorNeeded()
    removeRestartLabel()
    addBackScoreLabels()
    //self.physicsWorld.gravity = CGVector( dx: 0.0, dy: -0.2 )
}

func setupCircles() {

    Green = SKShapeNode(circleOfRadius: radius) // Size of Circle
    Green.position.y = frame.size.height
    Green.strokeColor = SKColor.clearColor()
    Green.glowWidth = 1.0
    Green.fillColor = SKColor.greenColor()
    Green.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    Green.physicsBody?.categoryBitMask = Physics.Enemy
    Green.physicsBody?.contactTestBitMask = Physics.Bar
    Green.physicsBody?.collisionBitMask = Physics.Bar
    Green.physicsBody?.dynamic = true
    Green.name = "Enemy"

    Red = SKShapeNode(circleOfRadius: radius) // Size of Circle
    Red.position.y = frame.size.height
    Red.strokeColor = SKColor.clearColor()
    Red.glowWidth = 1.0
    Red.fillColor = SKColor.redColor()
    Red.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    Red.physicsBody?.categoryBitMask = Physics.Enemy
    Red.physicsBody?.contactTestBitMask = Physics.Bar
    Red.physicsBody?.collisionBitMask = Physics.Bar
    Red.physicsBody?.dynamic = true
    Red.name = "Enemy"

    Blue = SKShapeNode(circleOfRadius: radius) // Size of Circle
    Blue.position.y = frame.size.height
    Blue.strokeColor = SKColor.clearColor()
    Blue.glowWidth = 1.0
    Blue.fillColor = SKColor.blueColor()
    Blue.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    Blue.physicsBody?.categoryBitMask = Physics.Enemy
    Blue.physicsBody?.contactTestBitMask = Physics.Bar
    Blue.physicsBody?.collisionBitMask = Physics.Bar
    Blue.physicsBody?.dynamic = true
    Blue.name = "Enemy"

    Yellow = SKShapeNode(circleOfRadius: radius) // Size of Circle
    Yellow.position.y = frame.size.height
    Yellow.strokeColor = SKColor.clearColor()
    Yellow.glowWidth = 1.0
    Yellow.fillColor = SKColor.yellowColor()
    Yellow.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    Yellow.physicsBody?.categoryBitMask = Physics.Enemy
    Yellow.physicsBody?.contactTestBitMask = Physics.Bar
    Yellow.physicsBody?.collisionBitMask = Physics.Bar
    Yellow.physicsBody?.dynamic = true
    Yellow.name = "Enemy"

    Purple = SKShapeNode(circleOfRadius: radius) // Size of Circle
    Purple.position.y = frame.size.height
    Purple.strokeColor = SKColor.clearColor()
    Purple.glowWidth = 1.0
    Purple.fillColor = SKColor.purpleColor()
    Purple.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    Purple.physicsBody?.categoryBitMask = Physics.Enemy
    Purple.physicsBody?.contactTestBitMask = Physics.Bar
    Purple.physicsBody?.collisionBitMask = Physics.Bar
    Purple.physicsBody?.dynamic = true
    Purple.name = "Enemy"

    self.addChild(Green)
    self.addChild(Red)
    self.addChild(Blue)
    self.addChild(Yellow)
    self.addChild(Purple)
}



func changeGreen(){

    if IsPaused == false{

    Green.position.y = frame.size.height + CGFloat(arc4random_uniform(100) + 1)

    var PositionX: CGFloat = CGFloat(UInt32(radius) + arc4random_uniform(UInt32(self.frame.width - 2.0 * radius)))


    Green.position.x = CGFloat(PositionX)

        while Green.containsPoint(Red.position) || Green.containsPoint(Blue.position) || Green.containsPoint(Yellow.position) || Green.containsPoint(Purple.position) {
            print("Overlap Detected")
            changeGreen()

        }
        let randomX: CGFloat = CGFloat(drand48())
        print("RandomX For Impulse = \(randomX)")
        self.Green.physicsBody?.applyImpulse(CGVectorMake(0, 0.1))
    }

}

func changeRed(){

    if IsPaused == false{

    Red.position.y = frame.size.height + CGFloat(arc4random_uniform(100) + 1)

    var PositionX: CGFloat = CGFloat(UInt32(radius) + arc4random_uniform(UInt32(self.frame.width - 2.0 * radius)))


    Red.position.x = CGFloat(PositionX)

        while Red.containsPoint(Blue.position) || Red.containsPoint(Yellow.position) || Red.containsPoint(Green.position) || Red.containsPoint(Purple.position) {
            print("Overlap Detected")
            changeRed()

        }
        let randomX: CGFloat = CGFloat(drand48())
        print("RandomX For Impulse = \(randomX)")
        self.Red.physicsBody?.applyImpulse(CGVectorMake(0, 0.1))
    }
}

func changeBlue()   {

    if IsPaused == false{

    Blue.position.y = frame.size.height + CGFloat(arc4random_uniform(100) + 1)

    var PositionX: CGFloat = CGFloat(UInt32(radius) + arc4random_uniform(UInt32(self.frame.width - 2.0 * radius)))

    Blue.position.x = CGFloat(PositionX)

        while Blue.containsPoint(Red.position) || Blue.containsPoint(Yellow.position) || Blue.containsPoint(Green.position) || Blue.containsPoint(Purple.position) {
            print("Overlap Detected")
            changeBlue()

        }
        let randomX: CGFloat = CGFloat(drand48())
        print("RandomX For Impulse = \(randomX)")
        print("Applying Impulse")
        self.Blue.physicsBody?.applyImpulse(CGVectorMake(0, 0.1))
    }
}

func changeYellow() {

    if IsPaused == false{

    Yellow.position.y = frame.size.height  + CGFloat(arc4random_uniform(100) + 1)

    var PositionX: CGFloat = CGFloat(UInt32(radius) + arc4random_uniform(UInt32(self.frame.width - 2.0 * radius)))


    Yellow.position.x = CGFloat(PositionX)

        while Yellow.containsPoint(Red.position) || Yellow.containsPoint(Blue.position) || Yellow.containsPoint(Green.position) || Yellow.containsPoint(Purple.position) {
            print("Overlap Detected")
            changeYellow()

        }
        let randomX: CGFloat = CGFloat(drand48())
        print("RandomX For Impulse = \(randomX)")
        self.Yellow.physicsBody?.applyImpulse(CGVectorMake(0, 0.1))
    }
}

func changePurple() {

    if IsPaused == false{

    Purple.position.y = frame.size.height + CGFloat(arc4random_uniform(100) + 1)

    var PositionX: CGFloat = CGFloat(UInt32(radius) + arc4random_uniform(UInt32(self.frame.width - 2.0 * radius)))


    Purple.position.x = CGFloat(PositionX)

        while Purple.containsPoint(Red.position) || Purple.containsPoint(Blue.position) || Purple.containsPoint(Yellow.position) || Purple.containsPoint(Green.position) {
            print("Overlap Detected")
            changePurple()

        }
        let randomX: CGFloat = CGFloat(drand48())
        print("RandomX For Impulse = \(randomX)")
        self.Purple.physicsBody?.applyImpulse(CGVectorMake(0, 0.1))
    }
}

func spawnCircles() {

    changeRed()
    changeBlue()
    changeGreen()
    changeYellow()
    changePurple()
}

func randomYPos() -> Double{

    var rand = Double(arc4random_uniform(UInt32(0.10) + UInt32(0.8)))

    return rand
}

func changeColorNeeded() -> SKColor {

    colorNeeded = randomColor()
    return self.colorNeeded

}


func randomColor() -> SKColor{
    var colors: [SKColor] = [SKColor.yellowColor(),     SKColor.blueColor(), SKColor.greenColor(), SKColor.redColor(), SKColor.purpleColor()]

    var rand = Int(arc4random_uniform(4) + 0)

    return colors[rand]
}

我看不出你的代码有任何明显的错误。 你有没有试着增加冲动的价值?。0.1似乎很低。如果你想让它们向下移动,你需要把它设为负值


如果您遵循swift编程指南,这也是一个好主意。属性不应该以大写字母开头,只有类、协议和结构应该以大写字母开头。这使您的代码更难阅读,因为它标记为蓝色,但不应该。我看不出您的代码有任何明显的错误。 你有没有试着增加冲动的价值?。0.1似乎很低。如果你想让它们向下移动,你需要把它设为负值


如果您遵循swift编程指南,这也是一个好主意。属性不应该以大写字母开头,只有类、协议和结构应该以大写字母开头。这使得你的代码更难阅读,因为它被标记为蓝色,但不应该。你一定要遵循命名约定,尤其是在StackOverflow上(因为突出显示错误),比如他在回答中指出的@crashoverride777(是的,0.1可能对你的身体没有影响)。你肯定应该遵循命名约定,尤其是在StackOverflow上(因为突出显示错误),比如他在回答中指出的@crashoverride777(是的,0.1可能对你的身体没有影响)。我已经尝试增加值。谢谢你的建议,真奇怪。你试过几个100吗?我试过增加数值。谢谢你的建议,真奇怪。你试过几次100码吗?