Как прекратить текущую транзакцию SCN?

Я использую SCNTransaction для перемещения игровых объектов. Более конкретно, когда игрок нажимает где-то на экране, объект будет двигаться к этому месту назначения. Но иногда игрок может сделать неправильный ход, поэтому я хочу создать кнопку, которая может прекратить все транзакции SCN.

Однако, в отличие от SKAction, который можно завершить простой строкой - self.removeAllActions (), SCNTransaction не может быть прерван или даже приостановлен извне согласно Документации разработчика Apple. Хуже того, я обнаружил, что до того, как объект достигает своего места назначения, его положение уже изменилось на положение места назначения, поэтому я не могу просто использовать другую транзакцию SCNT, чтобы противодействовать текущей, узнав текущую позицию объекта.

Кто-нибудь может дать мне несколько советов? Большое спасибо.

1 ответ

Решение

SCNTransaction и его принципы анимации соответствуют принципам Core Animation и CATransaction, Чтобы остановить анимацию, вам нужно установить значение модели на текущее значение презентации. Например:

node.position = node.presentation.position

Но если вы знакомы с SKAction и вы хотели бы реализовать ту же логику в своем приложении SceneKit, вы можете взглянуть на SCNAction, Они работают одинаково.

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