Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sprite kit 静止的物体仍在移动_Sprite Kit - Fatal编程技术网

Sprite kit 静止的物体仍在移动

Sprite kit 静止的物体仍在移动,sprite-kit,Sprite Kit,这可能是 但我没有资格发表评论。 我的问题是碰撞和静止物体。我正在开发一个小游戏,我有一个播放器,配置如下(从sks文件): 敌人: worldNode.enumerateChildNodesWithName("enemy") { node, _ in let enemy = node as! SKSpriteNode enemy.name = "enemy" enemy.physicsBody = SKPhysicsBody(circleOfR

这可能是

但我没有资格发表评论。 我的问题是碰撞和静止物体。我正在开发一个小游戏,我有一个播放器,配置如下(从sks文件):

敌人:

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}
我有一个来自brick的平台,配置如下:

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))}}
好的。。。有时,通常,当玩家跳到敌人身上时,冲动会正确出现,但地砖会向下移动,如果其动态属性设置为false。我试着在地砖上固定一个接缝,但当它被推倒时,它的身体会“出故障”;我试着打印地砖的物理体速度特性,当问题出现时,速度的dx向量大于100,但是静态体是否应该不受力的影响? 有什么想法吗


非常感谢

您是否在地图中使用了平铺?不,我使用的是Xcode的内置场景编辑器(sks文件),我曾经遇到过类似的问题,节点偶尔会意外移动。尝试在您的地板砖上使用SKConstraint将其锁定到位。我尝试过,但如果问题发生时块是用关节(固定、销、弹簧)固定的,它会“滑动”、“振动”,因为它的速度属性大于100。。。我也尝试过约束,在这种情况下,当问题发生时,由于约束,精灵的纹理静止不动,但它的physicBody下降了。。。
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))}}