使节点受重力影响没有影响;迅速

时间:2015-05-13 01:15:36

标签: ios swift sprite-kit

所以,我正在尝试使用Sprite Kit和Swift制作一个简单的游戏。在我的游戏中,我有从天而降的障碍物。他们是小圈子。这是我的圈子代码:

func createObstacle(){

    var ball = SKShapeNode(circleOfRadius: 20 )
    var width = UInt32(self.frame.width)
    var random_number = arc4random_uniform(width)
    ball.position = CGPointMake(CGFloat(random_number), frame.height)
    ball.strokeColor = SKColor.blackColor()
    ball.glowWidth = 1.0
    ball.fillColor = SKColor.blueColor()
    ball.physicsBody?.affectedByGravity = true
    self.addChild(ball)
}

这很简单。但是,这一行

ball.physicsBody?.affectedByGravity = true

似乎并没有真正影响节点。这没有做任何事情,并且模拟器中没有可视化显示的重力拉力。我不知道为什么这不起作用。有人知道为什么吗?

编辑代码:

func createObstacle(){

    var ball = SKShapeNode(circleOfRadius: 20 )
    var width = UInt32(self.frame.width)
    var random_number = arc4random_uniform(width)
    ball.position = CGPointMake(CGFloat(random_number), frame.height)
    ball.strokeColor = SKColor.blackColor()
    ball.glowWidth = 1.0
    ball.fillColor = SKColor.blueColor()
    ball.physicsBody = SKPhysicsBody(circleOfRadius: 20)
    ball.physicsBody?.affectedByGravity = true
    self.addChild(ball)
}

1 个答案:

答案 0 :(得分:2)

您尚未向SKPhysicsBody添加SKShapeNode,因此ball.physicsBodynil且未设置affectedByGravity

要添加物理主体,您可以执行以下操作:

ball.physicsBody = SKPhysicsBody(circleOfRadius: 20)

现在您可以设置affectedByGravity

ball.physicsBody!.affectedByGravity = true

修改

CGVector的{​​{1}}应为:

physicsWorld.gravity