В моем проекте я создаю новые узлы с помощью класса RocketMaker. Внутри этого класса у меня есть функция с именем applyRecurringForce()
...
func applyRecurringForce() {
var thrust: CGVector = CGVectorMake(100, 100)
physicsBody!.applyForce(thrust)
}
Моя проблема в том, что я не могу получить доступ к этой функции из основной сцены.
override func update(currentTime: NSTimeInterval) {
/* Called before each frame is rendered */
for rocketNode in rocketShips.children {
println("physicsBody: \(rocketNode.physicsBody.description)")
rocketNode.physicsBody.applyRecurringForce()
}
}
Начиная с приведенного выше кода, я получаю две ошибки: одну для println
и одну для вызова applyRecurringForce()
.
Подход 1: без принудительной распаковки...
1) Ошибка println: «Значение необязательного типа 'SKPhysiceBody' не развернуто; вы хотели использовать '!' или '?'?" и предлагает принудительно развернуть
2) Вызов возвращает "Невозможно вызвать 'applyRecurringForce' без аргументов"
Подход 2: я добавляю "!" следуя предложенному решению...
1) Ошибка println такая же, как и для предыдущего подхода": "Значение необязательного типа 'SKPhysiceBody' не развернуто; Вы хотели использовать '!' или '?'?" и снова предлагает принудительно развернуть
2) Вызов возвращает ту же ошибку, что и раньше: "Невозможно вызвать 'applyRecurringForce' без аргументов"
Подход 3. Итак, я следую цепочке, используя "physicsBody!!" в обеих строках в функции переопределения. На этот раз одна из двух ошибок устранена...
1) Ошибка println устранена
2) Вызов возвращает "'SKPhysicsBody не имеет члена с именем 'applyRecurringForce'"
Если я закомментирую вызов, я получу
physicsNodeName: тип: репрезентативный объект: [название: 'ракета1' позиция: {56, 294} аккумулированный кадр: {{16.849998474121094, 280.20001220703125}, {78.300003051757812, 27.5999755859375}}]
У кого-нибудь есть идея, что случилось ?? Мне эта двойная развертка кажется очень странной.