2015-04-14 10 views
-1

У меня есть 2 тела физики в сцене. Одно из этих тел - это коробка, которая просто падает прямо вниз (из-за силы тяжести), другая - игрок, который может стоять, бегать или прыгать, находясь на коробке.spritekit 2 тела сталкиваются, но не отскакивают друг от друга

В настоящее время, когда игрок сталкивается с падающей коробкой, они отскакивают друг от друга, однако я не хочу, чтобы они это делали, я хочу, чтобы ящик и игрок не влияли на физические движения друг друга, а просто чтобы игрок мог стоять, бегать и прыгать, пока он находится на коробке.

Heres код для обоих спрайтов:

func setUpPlayer() { 
     player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size) 
     player.physicsBody?.mass = 1 
     player.physicsBody?.restitution = 0 
     player.xScale = 0.5 
     player.yScale = 0.5 
     player.position = CGPoint(x: 600, y: 800) 
     addChild(player) 
    } 

func addSquare() { 
     let squareNode = SKSpriteNode(imageNamed: "fblogo.png") 

     squareNode.physicsBody = SKPhysicsBody(rectangleOfSize: squareNode.size) 
     squareNode.physicsBody?.mass = 1 
     squareNode.physicsBody?.restitution = 0.2 
     squareNode.physicsBody?.linearDamping = 0 
     squareNode.physicsBody?.angularDamping = 0 
     squareNode.physicsBody?.dynamic = true 
     squareNode.xScale = 0.5 
     squareNode.yScale = 0.5 
     squareNode.position = CGPoint(x: 500, y: 700) 
     self.addChild(squareNode) 
     squaresArray.addObject(squareNode) 
    } 

ответ

2

Попробуйте установить их physicsBody.collisionBitMask быть что-то ноль. Может быть, вы могли бы сделать только 0:

func setUpPlayer() { 
     player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size) 
     player.physicsBody?.mass = 1 
     player.physicsBody?.restitution = 0 
     player.xScale = 0.5 
     player.yScale = 0.5 
     player.position = CGPoint(x: 600, y: 800) 
     addChild(player) 
    } 

func addSquare() { 
     let squareNode = SKSpriteNode(imageNamed: "fblogo.png") 

     squareNode.physicsBody = SKPhysicsBody(rectangleOfSize: squareNode.size) 
     squareNode.physicsBody?.mass = 1 
     squareNode.physicsBody?.restitution = 0.2 
     squareNode.physicsBody?.linearDamping = 0 
     squareNode.physicsBody?.angularDamping = 0 
     squareNode.physicsBody?.dynamic = true 
     squareNode.physicsBody?.collisionBitMask = 0 
     squareNode.xScale = 0.5 
     squareNode.yScale = 0.5 
     squareNode.position = CGPoint(x: 500, y: 700) 
     self.addChild(squareNode) 
     squaresArray.addObject(squareNode) 
    } 

Это не может быть точно, что вам нужно, так как я не ставил это в Xcode, прежде чем отправлять это, чтобы проверить, работает ли он. Но установка collisionBitMask для объекта означает, что он только «сталкивается» или «сталкивается» с объектами с битовой маской переданного в UInt или переменной. Таким образом, он все еще динамичен, но не физически затронут столкновением.

+0

его то, что я хотел, спасибо! –

Смежные вопросы