所以,我正在尝试使用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)
}
答案 0 :(得分:2)
您尚未向SKPhysicsBody
添加SKShapeNode
,因此ball.physicsBody
为nil
且未设置affectedByGravity
。
要添加物理主体,您可以执行以下操作:
ball.physicsBody = SKPhysicsBody(circleOfRadius: 20)
现在您可以设置affectedByGravity
:
ball.physicsBody!.affectedByGravity = true
修改强>
CGVector
的{{1}}应为:
physicsWorld.gravity