Столкновение SKSpriteNode не работает должным образом - PullRequest
0 голосов
/ 09 мая 2019

Я создаю игру в пинбол и выявляю столкновения между мячом и бамперами.Этот код работает большую часть времени, но бывают моменты, когда мяч проходит через бампер.У меня есть печатное заявление, которое регистрирует, что мяч попал в бампер, но импульс к мячу не доставлен.

Вот код, который срабатывает при столкновении:

func handleBallAndTargetCollision( _ theBall:Ball, target:Target, contactPoint:CGPoint) {
    if target.isBumper {
        print("Collided with bumper: \(target.name)")
        let xDiff:CGFloat =  contactPoint.x - target.position.x
        let yDiff:CGFloat =  contactPoint.y - target.position.y
        let theForce:CGVector = CGVector(dx: xDiff * target.impactForce, dy: yDiff * target.impactForce)
        theBall.physicsBody!.applyImpulse(theForce )
    } else {
        handleTarget(target: target)
    }
}

Этот код должен стрелять мячом в направлении, противоположном тому, где он ударил по бамперу.

Есть ли лучший способ сделать это, кроме подачи импульса на мяч?

Есть ли причина, по которой мяч иногда проходит через бампер без применения импульса?

...