gpt4 book ai didi

swift - 如何将这些转换应用于 SpriteKit 中的一行

转载 作者:搜寻专家 更新时间:2023-11-01 05:34:25 26 4
gpt4 key购买 nike

我不确定我应该使用什么工具来完成我想做的事情,因为我只真正熟悉 SKSpriteNodes 和一点点 SKShapeNodes。

我的任务如下:

  • 向场景中添加一条线,SKShapeNode?
  • 沿线的底点(起点?)旋转某个角度。想象一个时钟指针,围绕底部点旋转
  • 找到直线平移后顶点(终点?)的新点(x,y 坐标)

有谁知道我怎样才能做到这一点?我目前正在为我的线使用 SKShapeNode 并使用 .zRotation 旋转它,但我似乎无法实现我的目标。 SKShapeNodes 似乎没有 achorPoint 属性,所以我无法更改旋转点。我也不知道如何在旋转后找到我的线的终点位置,我按如下方式创建它:

        let linePath = CGMutablePath()
linePath.move(to: begin)
linePath.addLine(to: end)

let line = SKShapeNode()
line.path = linePath
line.strokeColor = UIColor.black
line.lineWidth = 5
SceneCoordinator.shared.gameScene.addChild(line)

我正在使用:

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

最佳答案

如果您发现 FPS 下降,SKShapeNode 可能会非常昂贵。此外,您可以轻松地将形状转换为 Sprite 以获得 .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),旋转形状,然后将其重新定位到新位置...

两者都将是数学:[所以希望 anchor 对你有用

关于swift - 如何将这些转换应用于 SpriteKit 中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44320807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com