How to find the speed of SKSpriteNode from 5 frames ago in Swift

175 views Asked by At

So I have this Swift code using SpriteKit:

let ballX = ball.position.x
let ballY = ball.position.y
let ballR = ball.size.width / 2
let sceneW = self.size.width
let sceneH = self.size.height

if ballY >= sceneH - ballR - 3 {
    framesOnTop += 1
} else {
    framesOnTop = 0
}

if framesOnTop > 2 {
    // Some code here
}

I have the ball node (SKSpriteNode) that can hit the ceiling and bounce back (scene has no gravity) but sometimes it can hit the ceiling at a very steep angle and get stuck in an infinite loop, left right left right left right. In the if statement that says framesOnTop > 2 I am successfully detecting when it gets stuck, and I want to make it bounce back down at the right angle with physicsBody.applyImpulse. But to do this I need the velocity from before it gets stuck (~5 frames before). Is this possible or is there a better way to fix it?

0

There are 0 answers