physicalbodyを設定した、spriteNode同士が、衝突の際に常に跳ね返って欲しいのに、時々すり抜けてしまいます。

一方をSKAction.moveで移動し、他方にぶつけた時に、跳ね返る時と、すり抜ける時があります。

常に跳ね返るようにするにはどうすれば良いですか?

下の画像の赤い四角が”box”です。

import SpriteKit

class GameScene: SKScene {
    private var box : SKSpriteNode!
    override func didMove(to view: SKView) {

        if let b = self.childNode(withName: "box") {
            box = b as? SKSpriteNode
        }
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let move = SKAction.moveTo(y: 100, duration: 0.1)
        box?.run(move)
    }

    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
    }
}

GameScene.sks

[GameScene.sks]