静态物体仍在移动

时间:2015-04-22 10:34:15

标签: sprite-kit

这可能是重复的 Static Physics body still moving with contact

但我没有添加评论的声誉。 我的问题是碰撞和静态物体。我正在做一个小游戏,我有一个玩家,所以配置(来自sks文件):

player = worldNode.childNodeWithName("player") as! SKSpriteNode
    let playerBodyTexture = SKTexture(imageNamed: "player_physicBody_mask")
    player.physicsBody = SKPhysicsBody(texture: playerBodyTexture, size: CGSizeMake(player.size.width, player.size.height))
    player.physicsBody!.usesPreciseCollisionDetection = true
    player.physicsBody!.categoryBitMask = PhysicsCategory.player
    player.physicsBody!.collisionBitMask = PhysicsCategory.ground | PhysicsCategory.enemies
    player.physicsBody!.contactTestBitMask = PhysicsCategory.enemies
    player.physicsBody!.restitution = 0
    player.physicsBody!.friction = 0
    player.physicsBody!.allowsRotation = false}

敌人:

worldNode.enumerateChildNodesWithName("enemy") { node, _ in
        let enemy = node as! SKSpriteNode
        enemy.name = "enemy"
        enemy.physicsBody = SKPhysicsBody(circleOfRadius: 17)
        enemy.physicsBody!.dynamic = true
        enemy.physicsBody!.mass = 0.4
        enemy.physicsBody!.restitution = 0
        enemy.physicsBody!.categoryBitMask = PhysicsCategory.enemies
        enemy.physicsBody!.collisionBitMask = PhysicsCategory.ground | PhysicsCategory.player
        enemy.physicsBody!.contactTestBitMask = PhysicsCategory.player}

我有平板砖,所以配置:

worldNode.enumerateChildNodesWithName("fixedBlock") { node, _ in
        let fixedBlock = node as! SKSpriteNode
        fixedBlock.name = "fixedBlock"
        let fixedBlockBodyTexture = SKTexture(imageNamed: "tripleBlocks_physicBody_mask")
        fixedBlock.physicsBody = SKPhysicsBody(texture: fixedBlockBodyTexture, size: CGSizeMake(fixedBlock.size.width, fixedBlock.size.height))
        fixedBlock.physicsBody!.categoryBitMask = PhysicsCategory.ground
        fixedBlock.physicsBody!.collisionBitMask = PhysicsCategory.player | PhysicsCategory.enemies
        fixedBlock.physicsBody!.contactTestBitMask = 0
        fixedBlock.physicsBody!.dynamic = false
        fixedBlock.physicsBody!.affectedByGravity = false
        fixedBlock.physicsBody!.allowsRotation = false
        fixedBlock.physicsBody!.pinned = false
        fixedBlock.physicsBody!.friction = 0.3
        fixedBlock.physicsBody!.restitution = 0}

当玩家跳过敌人时,他有一种冲动(如超级马里奥:-)),所以我有这个:

func didBeginContact(contact: SKPhysicsContact) {
    let collision: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
    if collision == PhysicsCategory.player | PhysicsCategory.enemies {
           self.player.physicsBody!.applyImpulse(CGVectorMake(0, 500))}}

好吧......有时候,通常情况下,当玩家跳过敌人时,冲动正确地加上,但地面瓦片向下移动,如果它的动态适当性设置为假。我试图在地砖上涂上一个JointFixed,但是当它被推下时,它的物理身体“出现故障”;我试图打印地砖的physicsBody速度属性,当问题出现时,速度的dx向量> 100,但静态物体是否应受力影响? 有什么想法吗?

非常感谢

0 个答案:

没有答案
相关问题