Я создал два объекта, стены и игрока, которые могут столкнуться. Если они сталкиваются, игрок не должен передвигаться по стене или над ней. Если я устанавливаю massWall >> massPlayer, игрок может иногда перемещаться по стене. Если я не создаю массы, игрок и стена будут двигаться в направлении. Я хочу добиться, чтобы стена стояла неподвижно, и игрок не мог перелезть через стену. Мой код:Swift/SpriteKit обнаружение столкновений
func addWall(xPos: CGFloat, yPos: CGFloat){
let wallNode = SKSpriteNode(imageNamed: "wall")
wallNode.physicsBody = SKPhysicsBody(circleOfRadius: width/2)
wallNode.physicsBody!.affectedByGravity = false
wallNode.physicsBody!.categoryBitMask = ColliderType.Wall.rawValue
wallNode.physicsBody!.contactTestBitMask = ColliderType.Player.rawValue
wallNode.physicsBody!.collisionBitMask = ColliderType.Player.rawValue
wallNode.physicsBody!.mass = 1000000
let wall = Wall(node: wallNode)
Walls.append(wall)
wallNode.position.x = xPos
wallNode.position.y = yPos
wallNode.size = CGSize(width: width, height: width)
addChild(wallNode)
}
func addPlayer(xPos: CGFloat, yPos: CGFloat){
playerNode = SKSpriteNode(imageNamed: "player")
playerNode.physicsBody = SKPhysicsBody(circleOfRadius: width/2)
playerNode.physicsBody!.affectedByGravity = false
playerNode.physicsBody!.categoryBitMask = ColliderType.Player.rawValue
playerNode.physicsBody!.contactTestBitMask = ColliderType.Wall.rawValue
playerNode.physicsBody!.collisionBitMask = ColliderType.Wall.rawValue
playerNode.physicsBody!.mass = 1
let player = Player(node: playerNode, healthPoints: 100, attack: 10)
playerNode.position.x = xPos
playerNode.position.y = yPos
playerNode.size = CGSize(width: width, height: width)
addChild(playerNode)
}
В func didBeginContact(){}
у меня ничего не коды в этом, потому что я не сейчас, что с ним делать. Я не могу отменить движение, потому что я не отслеживаю последний ход.