Как установить начальную точку (или начальный угол) пути, описанного CGPathCreateWithEllipseInRect?

У меня есть спрайт, который следует по пути, описанному CGPathCreateWithEllipseInRect. Он всегда начинается в самой правой точке (я полагаю, потому что по умолчанию начинается с угла = 0). Как мне сделать так, чтобы он начинался с самой верхней точки (под углом = π/2)? Мой текущий код выглядит так:

    let pathCenter = CGPoint(x: frame.width/2 , y: frame.height/2)
    let pathDiameter = CGFloat(frame.height/4)
    let path = CGPathCreateWithEllipseInRect(CGRect(origin: pathCenter, size: CGSize(width: pathDiameter * 1.5, height: pathDiameter * 0.8)), nil)
    let followPath = SKAction.followPath(path, asOffset: false, orientToPath: false, duration: 6.0)
    sprite.runAction(SKAction.repeatActionForever(followPath))

2 ответа

Решение

Вы должны нарисовать свой собственный путь вместо того, чтобы использовать CGPathCreateWithEllipseInRect, добавляя точки в порядке, соответствующем тому, где вы хотите начать спрайт.

Попробуйте метод в этом посте: Как нарисовать круг, начиная сверху, а затем измените по мере необходимости.

@PatrickLynch ... Спасибо, я смог получить свой спрайт, начиная с самой верхней точки кругового пути, вот так...
var path = CGPathCreateMutable() CGPathAddArc(path!, nil, 100, 100, 100, CGFloat(M_PI_2) , CGFloat(2*M_PI + M_PI_2) , false) var followArc = SKAction.followPath(path, asOffset: true, orientToPath: false, duration: 2.0) sprite.runAction(followArc)

Другие вопросы по тегам