在节点的右边缘而不是在中心旋转 SKSpriteNode

Posted

技术标签:

【中文标题】在节点的右边缘而不是在中心旋转 SKSpriteNode【英文标题】:Rotate SKSpriteNode on right edge of node instead of in center 【发布时间】:2018-08-07 03:58:36 【问题描述】:

我一直在寻找这个答案,人们说使用锚点是我的解决方案。当我更改锚点时它不起作用。

我正在使用 SKSpriteKit 使对象移动。我有一个节点是身体,另一个节点是手臂。我正在尝试旋转手臂,使其附着在身体上但仍在旋转。我得到的是手臂按其中心旋转。我希望它在边缘旋转,使其看起来附着在身体上。有人可以帮忙吗?代码如下:sn-p。

arm.position = CGPoint(x: -30, y: 0)
arm.zPosition = 1
body.zPosition = 0

addChild(arm)
addChild(body)

var rotation = SKAction.rotate(byAngle: CGFloat(-Double.pi/2.2), duration: 0.4)
var rotationAction = SKAction.sequence([rotation])

arm.run(rotationAction)

如果我将锚点设置为 (0.3, 0.5) 之类的东西,手臂仍然没有连接到身体上,或者位置不是我想要的位置。我想知道是否有某种方法可以改变精灵的旋转轴。提前致谢。

【问题讨论】:

Bendable arm rotation in SpriteKit - rotate at point的可能重复 ***.com/q/51294892/1430420的可能重复 你了解anchorPoint的工作原理吗?它本质上是一个插入你手臂的图钉。因此,如果这是所有纸板切口,它将是您将销钉推入手臂的位置,而销钉就是身体上的位置。 好的,所以我把锚点设置为 0.5,默认为 0.5,如果我改变任何一个坐标值,那么手臂就会离开身体,这不是我想要的。 【参考方案1】:

设置arm.anchorPoint = CGPoint(x: 1, y: 1)

【讨论】:

这只是将手臂完全从身体上移开。

以上是关于在节点的右边缘而不是在中心旋转 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章

边缘计算技术及其安全问题

android编程用怎么让控件的“右边”对齐在屏幕的中心?

从中心而不是从左、中旋转

算法-红黑树旋转

Android,围绕自我中心旋转位图而不缩放它

是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?