swift 3 (SpriteKit) : Aligning SKPhysicsBody to SKShapeNode

标签 swift sprite-kit skphysicsbody 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 与直线对齐,请回复您的解决方案。谢谢!

最佳答案

如果你想制作一个从一点到另一点的物理体,你可以使用这样的东西:

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 动起来,那就找volume based initializers .

关于 swift 3 (SpriteKit) : Aligning SKPhysicsBody to SKShapeNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41203767/

相关文章:

ios - 应用程序不会填满设备屏幕,启动屏幕也不会自动旋转

sprite-kit - 如何检测物理体不同区域的接触

ios - Xcode 6.1 与 Swift : Terminating app due to uncaught exception 'NSUnknownKeyException'

sprite-kit - 如何在 SKSpriteNode 位置属性上使用 KVO

ios - 如何快速为整个应用程序的 UITextField 设置全局占位符颜色?

sprite-kit - SpriteKit : create node only once for all scenes

ios - SpriteKit SKPhysicsBody 像一扇门一样在一个方向上碰撞,你只能通过而不能返回

ios - 如何允许对象在skphysicsnode中的间隙中移动

swift - 如何从匹配的字典值中返回一个字符串?

ios - 自定义 UITableViewCell 的内容在编辑模式下被删除按钮重叠