2017-06-02 37 views
2

我不知道我应该使用什么工具来做我想做的事情,因为我只是非常熟悉SKSpriteNodes和SKShapeNodes。如何将这些转换应用于SpriteKit中的一行

我的任务如下:

  • 添加一行到现场,SKShapeNode?
  • 沿着它的底点(开始点?)旋转一定角度。想象一下这样的时钟指针,围绕底点
  • 旋转查找最高点的新点(X,Y坐标)(终点?)行已被翻译

后有谁知道我可以做到这一点?我目前正在为我的线使用SKShapeNode并使用.zRotation旋转它,但我似乎无法完成我的目标。似乎没有SKShapeNodes的achorPoint属性,所以我无法更改旋转点。另外我如何找到我行的终点的位置后,已旋转毫无章法,我创建它,如下所示:

​​

我使用旋转:

 public func rotate(angle: Double) { 
     var transform = CGAffineTransform(rotationAngle: CGFloat(angle)) 
     line.path = linePath.mutableCopy(using: &transform) 
    } 
+0

嘿那里,我的回答是否帮助你?如果没有,让我知道,所以我可以尝试为你更新它。 – Fluidity

回答

0

如果您注意到您的FPS下降,SKShapeNode可能非常昂贵。此外,您还可以轻松地将一个形状变成精灵获得.anchorPoint,但警告说,anchorpoint的行为并不总是如预期,你可能以后(特别是物理)错误:

func shapeToSprite(_ shape: SKShapeNode) -> SKSpriteNode { 
    let sprite = SKSpriteNode(texture: SKView().texture(from: shape)) 
    sprite.physicsBody = shape.physicsBody // Or create a new PB from alpha mask (may be slower, IDK) 
    shape.physicsBody = nil 
    return sprite 
} 

override func didMove(to view: SKView) { 
    let shape = SKShapeNode(circleOfRadius: 60) 
    let sprite = shapeToSprite(shape) 
    sprite.anchorPoint = CGPoint() 
    addChild(sprite) 
} 

否则,你是将不得不1),用正确的旋转重画线,2),旋转的形状,然后重新放置在一个新的位置...

这两个都将数学:[所以希望anchorppoint作品你

相关问题