Использование 3D Touch в Sprite Kit для измерения давления

В моем основном приложении я пытаюсь использовать 3D Touch, чтобы активировать стрельбу пулями, но результаты кажутся очень противоречивыми, и это не всегда дает результаты записи. Также мой iPhone 6S зависал, когда я использовал этот код, это код, который я использовал для теста.

 for touch in touches {
        let location = touch.locationInNode(self)

        var force =  touch.force * 10
        var maxForce = touch.maximumPossibleForce

        print ("The force is")
        print (maxForce*4)
        print (force*10000000)

        if force != 0{


            myLabel.text = "Force"
            myLabel.fontSize = 45
            myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
            self.addChild(myLabel)
            myLabel.zPosition = 100000


        }

        else {

           myLabel.removeFromParent()
        }

1 ответ

Я собираюсь предположить, что это сбой, потому что вы добавляете метку к родителю несколько раз (Ваше условие if нарушено, независимо от того, какую функцию вы вызываете, (touchesBegan,touchesMoved,touchesEnded) только одно из этих условий всегда будет touchesBegan а также touchesMoved, ваша сила всегда будет> 0, в вашем touchEnded, ваша сила должна быть 0. (Я предполагаю, что этот код является вашим touchMoved) Вместо этого добавьте свою метку в коде viewDidLoad и используйте поле.hidden, чтобы показать / скрыть свою метку на своих ходах. (Убедитесь, что на touchesEnded скрыть это)

Другие вопросы по тегам