     }
 
     override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
-        shouldIgnoreReturnTouch = false
+        touchDownOccurred = false
     }
     
     override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
-        // Make sure that Force Touch is available
+        // If Force Touch isn't available, just use Seek
         guard self.view?.traitCollection.forceTouchCapability == .available else {
             if let touchPosition = touches.first?.location(in: self) {
                 for boid in flock {

    private var frameCount:Int = 0
    private let neighborhoodUpdateFrequency = 31
    private let perceptionUpdateFrequency = 37
    private var shouldIgnoreReturnTouch = false

    override func didMove(to view: SKView) {
        self.backgroundColor = SKColor.black

            let normalTouchRange: ClosedRange<CGFloat> = 0.0...0.7
            let forceTouchRange: ClosedRange<CGFloat> = 0.7...CGFloat.greatestFiniteMagnitude
            
            // Prepare the Taptic Engine to reduce latency
            feedbackGenerator.prepare()
            
            // Use light touches as Seek and heavy touches as Evade
            switch touch.force {
            case normalTouchRange:
                guard !touchDownOccurred else { return }
                for boid in flock {
                    boid.seek(touchLocation)
                }
