Имам 2 спрайт възела. единият е играчът (червен) и има още един обект (зелен). освен това има невидима зона, която използвам за откриване на сблъсък.
Моето намерение е зелените обекти да се доближат до червения играч веднага щом играчът е в синия правоъгълник.
Досега настройвах обработката на сблъсъци по начин, по който SKAction се задейства, когато играчът се сблъска със синята зона. SKAction премества зеления обект до позицията на играча. Този подход работи, докато не работя с промени в текстурата, които се обработват с SKActionForever.
Ето моя код, който имам:
let distance: CGFloat = fabs(platformNode1.position.x - player.position.x);
let moveToPlayer = SKAction.move(to: CGPoint(x: player.position.x, y: platformNode1.position.y), duration: Double(distance/10))
let passengerAnimation = SKAction.group([moveToPlayer, animatePassengerAction])
animatePassengerAction = SKAction.repeatForever(SKAction.animate(with: passengerAnimation, timePerFrame: 0.1))
let removePassenger = SKAction.removeFromParent()
let setPassengerToOnBoard = SKAction.run({ () -> Void in
self.passengerOnBoard = true
})
let onBoardActionSequence = SKAction.sequence([passengerAnimation, removePassenger, setPassengerToOnBoard])
self.passenger.run(onBoardActionSequence, withKey: "isOnboarding")
Моят проблем не е, че последователността SKAction никога не завършва, тъй като последователността е циклична "passengerAnimation" до вечност. Но имам нужда от тази анимация завинаги, тъй като това представлява анимацията на ходещия пътник/обект, който трябва да се повтаря, докато обектът се доближава до играча.
Някой има ли идея как да се реши този проблем? Наистина съм заседнал.