【问题标题】:Starting position of a Sprite NodeSprite 节点的起始位置
【发布时间】:2017-06-21 07:46:18
【问题描述】:

我正在使用以下代码使精灵节点在 Xcode spritekit 中绕圈移动。

let circleDiameter = CGFloat(100)
// center our path based on our sprites initial position
let pathCenterPoint = CGPoint(
    x: object.position.x - circleDiameter,
    y: object.position.y - circleDiameter/2)
// create the path our sprite will travel along
let circlePath = CGPath(ellipseIn: CGRect(origin: pathCenterPoint, size: CGSize(width: circleDiameter, height: circleDiameter)), transform: nil)
// create a followPath action for our sprite
let followCirclePath = SKAction.follow(circlePath, asOffset: false, orientToPath: false, duration: 3)
// make our sprite run this action forever
object.run(SKAction.repeatForever(followCirclePath).reversed(), withKey: “moving”)

       world.addChild(object)

问题是,精灵节点的起始位置总是位于圆形路径的右侧。我知道我可以使用 .reversed() 来改变精灵节点的方向,但这不是我要问的。

如何将“起点”更改为圆形路径的左侧?

谢谢各位!请参考下图:D

【问题讨论】:

标签: swift sprite-kit skspritenode


【解决方案1】:

CGPath(ellipseIn:...) 是一种创建路径的实用方法 椭圆,其中“参数”或“角度”从 0 到 2π。

您不能为跟随动作添加“偏移量”,但您可以定义 路径从圆圈的“左端”开始:

let circlePath = CGMutablePath()
circlePath.addArc(center: pathCenterPoint, radius: circleDiameter,
                  startAngle: -.pi, endAngle: .pi, clockwise: false)

【讨论】:

  • 正如 Martin 所说 - 精灵将完全按照绘制的补丁。
  • 谢谢马丁!我试图“抵消”,但没有奏效。干杯!
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多