- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的场景是,我正在沿着拱形移动现有节点,并希望它在到达另一侧时停止。一个简单的比喻是,我想让一些东西沿着彩虹移动。
虽然我当前的代码确实执行了正确的椭圆形,但它随后在我的 y 原点下方继续返回到其起点。我知道我可以更好地控制圆圈停在我想要的地方,但对于我的用例,圆形路径不起作用。
我的代码的缩写版本是:
override func didMove(to view: SKView) {
let size = CGSize(width: frame.width - 60, height: 100)
let box = SKSpriteNode(color: .orange,
size: CGSize(width: 30, height: 30))
box.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(box)
let origin = CGPoint(x: 30, y: frame.midY)
let rect = CGRect(origin: origin, size: size)
let path = UIBezierPath(ovalIn: rect)
let action = SKAction.follow(path.cgPath,
asOffset: false,
orientToPath: false,
speed: 250)
box.run(action)
}
上面的代码运行时会产生以下结果:
我的目标是橙色盒子到达左侧后停止。
我已经查看了各种 UIBezierPath 初始值设定项,唯一看起来有前途的另一个是使用 UIBezierPath(cgPath:)
。理想情况下,我需要 cgPath
来填充它以满足我的标准。
最佳答案
所以我对基于 UIBezierPath(cgPath:)
的方法的看法是正确的。
对我来说,关键是使用问题中发布的代码运行,然后捕获 path
变量的内容,以便我可以从中提取值。有了这些,我就可以构建一个可以使用的硬编码 CGPath
。
override func didMove(to view: SKView) {
let box = SKSpriteNode(color: .orange,
size: CGSize(width: 30, height: 30))
box.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(box)
let path = UIBezierPath()
let start = CGPoint(x: 345, y: 383.5)
let end = CGPoint(x: 30, y: 383.5)
let controlPoint = CGPoint(x: 190, y: 533.5)
path.move(to: start)
path.addQuadCurve(to: end, controlPoint: controlPoint)
let action = SKAction.follow(path.cgPath,
asOffset: false,
orientToPath: false,
speed: 250)
box.run(SKAction.repeatForever(action))
}
最后,使用时的样子:
如果我避免 SKAction
上的重复
,它将完成并让对象准确地位于我想要的位置。
由于我不是 SpriteKit 方面的专家,因此我有兴趣了解是否有更好的方法来解决这个问题。
关于ios - 我想沿着半椭圆形路径移动 SKNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152218/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!