SKShapeNodes Столкновение с моим телом SKPhysics, когда я не хочу - PullRequest
0 голосов
/ 30 апреля 2018

Я создаю игру, в которой у меня есть шар, созданный как узел SKSpriteNode, который сталкивается с некоторыми физическими телами, которые я не хочу. Вот мой мяч:

orangeBall = OrangeBall(path: ballTrajectory, color: UIColor.orange, borderColor: UIColor.black)
    orangeBall.physicsBody = SKPhysicsBody(circleOfRadius: Physics.PhysicsNumbers.ballRadius)
    orangeBall.position = Physics.PhysicsNumbers.ballRestPos
    orangeBall.physicsBody?.categoryBitMask = CollisionsChecker.Ball
    orangeBall.physicsBody?.collisionBitMask = CollisionsChecker.Frame | CollisionsChecker.Box | CollisionsChecker.Score
    orangeBall.physicsBody?.contactTestBitMask = CollisionsChecker.Frame | CollisionsChecker.Box | CollisionsChecker.Score
    orangeBall.physicsBody?.isDynamic = false
    orangeBall.physicsBody?.affectedByGravity = false
    addChild(orangeBall)

и я хочу, чтобы он обнаружил, что он был в контакте с этим физическим телом, но на самом деле не сталкивался:

score = NetBoxes(path: scoreStationary, color: UIColor.red, borderColor: UIColor.red)
    score.position = Physics.PhysicsNumbers.scoreRest
    score.physicsBody = SKPhysicsBody(circleOfRadius: 50)
    score.physicsBody?.categoryBitMask = CollisionsChecker.Score
    score.physicsBody?.contactTestBitMask = 0
    score.physicsBody?.collisionBitMask = CollisionsChecker.Ball
    score.physicsBody?.affectedByGravity = false
    score.physicsBody?.isDynamic = false
    addChild(score)

(circleOfRadius только для целей тестирования) Каждый раз, когда я пытаюсь проверить свои коллизии, кажется, что не выводится то, что я хочу, чтобы он делал:

func didBegin(_ contact: SKPhysicsContact){
    let firstBody = contact.bodyA
    let secondBody = contact.bodyB

    if firstBody.categoryBitMask == CollisionsChecker.Ball && secondBody.categoryBitMask == CollisionsChecker.Score || firstBody.categoryBitMask == CollisionsChecker.Score && secondBody.categoryBitMask == CollisionsChecker.Ball{
        print("Ball in hoop")
    }

По сути, мой orangeBall, который является SKSphapeNode, всегда сталкивается с моим Score PhysicsBody. Возможно также, что оба физических тела вокруг моего мяча и партитуры соприкасаются. Я в растерянности, любая помощь будет оценена!

1 Ответ

0 голосов
/ 30 апреля 2018

Я понял это. Позже в коде я воссоздаю физику для своего OrangeBall. Формируя другую физику, вокруг нее сталкиваются с другими моими узлами!

...