gpt4 book ai didi

ios - CGPath 的错误比例 - Swift

转载 作者:行者123 更新时间:2023-11-28 08:50:44 25 4
gpt4 key购买 nike

我正在关注 raywenderlich.com 上的快速教程我目前正处于创建物理体的阶段。

正如教程所用,我正在使用 Path Generator,如 this question 上的答案所示。 ,在 Stackoverflow 上。

我使用的是基本的火柴人,见此处:

Stickman

使用答案中的代码片段,它会生成这些坐标,如下面我创建播放器的位置所示:

player.position = CGPoint(x: size.width * 0.2, y: playableStart + ((player.size.height/2) * kHDPlayerScaleDown) + playableHeight * 0.4)
player.scaleAsPoint = CGPoint(x: kHDPlayerScaleDown, y: kHDPlayerScaleDown)
player.zPosition = Layer.Player.rawValue

// Physics Body
let offsetX = player.size.width * player.anchorPoint.x
let offsetY = player.size.height * player.anchorPoint.y

let path = CGPathCreateMutable()

CGPathMoveToPoint(path, nil, 215 - offsetX, 275 - offsetY)
CGPathAddLineToPoint(path, nil, 223 - offsetX, 7 - offsetY)
CGPathAddLineToPoint(path, nil, 171 - offsetX, 7 - offsetY)
CGPathAddLineToPoint(path, nil, 30 - offsetX, 69 - offsetY)
CGPathAddLineToPoint(path, nil, 144 - offsetX, 271 - offsetY)

CGPathCloseSubpath(path)

player.physicsBody = SKPhysicsBody(polygonFromPath: path)
player.physicsBody?.categoryBitMask = PhysicsCategory.Player
player.physicsBody?.collisionBitMask = 0
player.physicsBody?.contactTestBitMask = PhysicsCategory.Obstacle

但是,我按 0.1 (kHDPlayerScaleDown) 缩放火柴人,如上面的代码 player.scaleAsPoint...

因此(我认为)物理体不再与 Sprite 对齐......

我尝试在创建物理体之前和之后缩放图像,但在我的设备上显示时都没有给出正确的位置。如果我之前缩放,它会大得多(我假设图像的原始大小),如果在创建物理体后缩放,它会小得多,如下所示:

scaled stickman

在发布之前,我还通过 kHDPlayerScaleDown 绑定(bind)缩放坐标,但我得到了奇怪的结果,所以我实现错误......

如何缩放此路径以匹配缩放后的 Sprite ?

最佳答案

我在 SceneKit 中使用边界框。在 Sprite 套件中有边界矩形。

来自苹果: “frame 属性为节点的可视内容提供边界矩形。”

使用框架计算应用到路径的比例比例。

关于ios - CGPath 的错误比例 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269660/

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