Движение и вращение SpriteNode в Swift 4.1 - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь заставить свой спрайт перемещаться и поворачиваться к месту моего прикосновения и следовать, пока я перемещаю палец по экрану. Часть движения работает нормально, но я не могу заставить ее вращаться. Моя функция moveAndRotate находится ниже.

func moveAndRotate(spriteNode: SKSpriteNode, toPosition position: CGPoint) {
    let angle = atan2(position.y -  player.position.y, position.x - player.position.x)

    let rotateAction = SKAction.rotate(toAngle: angle - -(CGFloat(Double.pi / 2)), duration: 0.05, shortestUnitArc: true)
    player.run(rotateAction)

    let offsetX = position.x - player.position.x
    let offsetY = position.y - player.position.y
    let normal = simd_normalize(simd_double2(x: Double(offsetX), y: Double(offsetY)))

    velocity = CGVector(dx: CGFloat(normal.x) * movePointsPerSecond, dy: CGFloat(normal.y) * movePointsPerSecond)
}

1 Ответ

0 голосов
/ 13 ноября 2018

Длительность была установлена ​​на o.5 для rotateAction, измените его на 0, и он отлично работает.

...