Как прекратить текущую транзакцию SCN?
Я использую SCNTransaction для перемещения игровых объектов. Более конкретно, когда игрок нажимает где-то на экране, объект будет двигаться к этому месту назначения. Но иногда игрок может сделать неправильный ход, поэтому я хочу создать кнопку, которая может прекратить все транзакции SCN.
Однако, в отличие от SKAction, который можно завершить простой строкой - self.removeAllActions (), SCNTransaction не может быть прерван или даже приостановлен извне согласно Документации разработчика Apple. Хуже того, я обнаружил, что до того, как объект достигает своего места назначения, его положение уже изменилось на положение места назначения, поэтому я не могу просто использовать другую транзакцию SCNT, чтобы противодействовать текущей, узнав текущую позицию объекта.
Кто-нибудь может дать мне несколько советов? Большое спасибо.
1 ответ
SCNTransaction
и его принципы анимации соответствуют принципам Core Animation и CATransaction
, Чтобы остановить анимацию, вам нужно установить значение модели на текущее значение презентации. Например:
node.position = node.presentation.position
Но если вы знакомы с SKAction
и вы хотели бы реализовать ту же логику в своем приложении SceneKit, вы можете взглянуть на SCNAction
, Они работают одинаково.