Swift 3 (SpriteKit): 对齐 SKPhysicsBody 到 SKShapeNode
Swift 3 (SpriteKit): Aligning SKPhysicsBody to SKShapeNode
我在我的程序中使用这个创建 SKShapeNodes:
let points = [CGPoint(x: x, y: y), CGPoint(x: x2, y: y2)]
let line = SKShapeNode(points: &points, count: points.count)
我遇到的问题是,每当我将 physicsBody 添加到线条时,physicsBody 都没有与线条对齐。我意识到这个问题是因为线的位置总是 CGPoint(x: 0, y: 0) 所以 physicsBody 总是在屏幕的中心,不管线在哪里。这是我创建 physicsBody 的代码:
line.physicsBody = SKPhysicsBody(rectangleOf: (line.frame.size))
如果有人知道如何将 physicsBody 与直线对齐,请回复您的解决方案。谢谢!
如果你想做一个从一点到另一点的物理body,你可以使用这样的东西:
class GameScene:SKScene {
override func didMove(to view: SKView) {
var points = [CGPoint(x: 22, y: 22), CGPoint(x: 155, y: 155)]
let line = SKShapeNode(points: &points, count: points.count)
print(line.frame.size)
line.physicsBody = SKPhysicsBody(edgeFrom: points[0], to: points[1])
addChild(line)
}
}
这将使用两个点创建基于边缘的物理 body。默认情况下,边缘物理 body 是静态的,因此请记住这一点。要注册联系人(或与此 body 发生冲突),另一个 body 必须是动态的。
如果您想要此 body 动态,请查找 volume based initializers。
我在我的程序中使用这个创建 SKShapeNodes:
let points = [CGPoint(x: x, y: y), CGPoint(x: x2, y: y2)]
let line = SKShapeNode(points: &points, count: points.count)
我遇到的问题是,每当我将 physicsBody 添加到线条时,physicsBody 都没有与线条对齐。我意识到这个问题是因为线的位置总是 CGPoint(x: 0, y: 0) 所以 physicsBody 总是在屏幕的中心,不管线在哪里。这是我创建 physicsBody 的代码:
line.physicsBody = SKPhysicsBody(rectangleOf: (line.frame.size))
如果有人知道如何将 physicsBody 与直线对齐,请回复您的解决方案。谢谢!
如果你想做一个从一点到另一点的物理body,你可以使用这样的东西:
class GameScene:SKScene {
override func didMove(to view: SKView) {
var points = [CGPoint(x: 22, y: 22), CGPoint(x: 155, y: 155)]
let line = SKShapeNode(points: &points, count: points.count)
print(line.frame.size)
line.physicsBody = SKPhysicsBody(edgeFrom: points[0], to: points[1])
addChild(line)
}
}
这将使用两个点创建基于边缘的物理 body。默认情况下,边缘物理 body 是静态的,因此请记住这一点。要注册联系人(或与此 body 发生冲突),另一个 body 必须是动态的。
如果您想要此 body 动态,请查找 volume based initializers。