Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
为什么applyImpulse在swift spritekit中不起作用?_Swift_Sprite Kit_Game Physics - Fatal编程技术网

为什么applyImpulse在swift spritekit中不起作用?

为什么applyImpulse在swift spritekit中不起作用?,swift,sprite-kit,game-physics,Swift,Sprite Kit,Game Physics,在我的游戏中,当用户触摸屏幕时,会使用func fire()创建一个子弹,但什么也没有发生 以下是我的代码: private func fire(position: CGPoint) { let bullet = SKShapeNode(circleOfRadius: 2) bullet.strokeColor = SKColor.darkGray bullet.fillColor = SKColor.darkGray let po

在我的游戏中,当用户触摸屏幕时,会使用
func fire()
创建一个子弹,但什么也没有发生

以下是我的代码:

private func fire(position: CGPoint) {
        let bullet = SKShapeNode(circleOfRadius: 2)
        bullet.strokeColor = SKColor.darkGray
        bullet.fillColor = SKColor.darkGray
        let posX = (position.x) * -1
        let posY = (position.y) * -1
        let pos = CGPoint(x: posX, y: posY)
        let theta = atan2((pos.y - player.position.y), (pos.x - player.position.x))
        let finalPos = CGPoint(x: (player.position.x) + (CGFloat(playerRadius) * cos(theta)), y: (player.position.y) + (CGFloat(playerRadius) * sin(theta)))
        bullet.physicsBody = SKPhysicsBody(circleOfRadius: 2)
        bullet.position = finalPos
        bullet.physicsBody!.affectedByGravity = false
        bullet.physicsBody!.isDynamic = false
        bullet.physicsBody!.pinned = false
        numberOfBullets += 1
        bullet.name = String(numberOfBullets)
        bullet.physicsBody!.collisionBitMask = bodyType.enemy.rawValue
        bullet.physicsBody!.categoryBitMask = bodyType.bullet.rawValue
        bullet.physicsBody!.contactTestBitMask = bodyType.enemy.rawValue
        bullet.physicsBody!.usesPreciseCollisionDetection = true
        world.addChild(bullet)
        bulletForce(bullet: bullet)
    }

    private func bulletForce(bullet: SKShapeNode) {
        let dx = Double((bullet.position.x - player.position.x))
        let dy = Double((bullet.position.y - player.position.y))
        let vector = CGVector(dx: dx, dy: dy)
        bullet.physicsBody!.applyImpulse(vector)
    }

提前感谢。

它失败的原因是您有
isDynamic=false

isDynamic
表示可以向车身施加力

欲了解更多信息,请参阅:
阅读developer.apple.com/reference/spritekit/skphysicsbody

dynamic=false,阅读感谢我完全忘记了它。我删除这个问题更好吗?不,删除这个问题会伤害你,我会快速回答