【问题标题】:Trouble with: SKPhysicsBody(polygonFromPath: CGPath) using Swift and SpriteKit问题:使用 Swift 和 SpriteKit 的 SKPhysicsBody(polygonFromPath: CGPath)
【发布时间】:2015-12-13 00:08:45
【问题描述】:

我正在尝试为 SKSpriteNode 创建一个物理体。我通常使用图像创建物理体并说:

snode = SKSpriteNode(imageNamed: snodeImage)
snode = SKPhysicsBody(texture: snode.texture!, size: snode.size)

我希望能够使用以下方法创建物理体:

snode.physicsBody = SKPhysicsBody(polygonFromPath: CGPath)

我不知道如何做到这一点,我已经尝试在网上查找,但我无法弄清楚。有人可以给我看一个小例子吗?也许告诉我你将如何使用这个构造函数创建一个简单的矩形物理体?

【问题讨论】:

    标签: swift sprite-kit skspritenode skphysicsbody cgpath


    【解决方案1】:

    最简单的方法是使用UIBezierPath,因为它有许多有用的构造函数,然后将其转换为polygonFromPath 想要的CGPath

    你要求一些代码来创建一个简单的矩形物理体:

    let square = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 128, height: 128))
    square.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
    
    let path = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
    square.physicsBody = SKPhysicsBody(polygonFromPath: path.CGPath)
    
    addChild(square)
    

    请注意,物理体是偏移的,因为它是从其节点的中心测量的。您可能希望在 GameViewController.swift 文件中使用 skView.showsPhysics = true 来帮助您调试物理形状。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多