В моем проекте я создаю новые узлы, используя класс RocketMaker. Внутри этого класса, у меня есть функция под названием applyRecurringForce()
...Развертывание SKPhysicsBody не работает
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“без аргументов»
Approach2: «!» Я добавить после предлагаемого решения ...
1) Ошибка println такая же, как и для предыдущего подхода »:« Значение необязательного типа «SKPhysiceBody» не разворачивается; вы хотели использовать '!' «?»? Или»и снова предлагает мне заставить разворачивать
2) Вызов возвращает ту же ошибку, как и ранее:„Невозможно вызвать „applyRecurringForce“ без аргументов“
Approach3: Так что я следую за цепь, используя «physicalBody !!» в обеих строках в функции переопределения. На этот раз одна из двух ошибок удалена ...
1) Ошибка печати не удалась
2) Вызов возвращает «SKPhysicsBody» не имеет член под названием 'applyRecurringForce' '
Если я прокомментирую звонок, я получаю
physicsNodeName: Тип: representedObject: [имя: положение 'rocket1': {56, 294} accumulatedFrame: {{16,849998474121094, +280,20001220703125}, {78,300003051757812, +27,5999755859375}}]
Кто-нибудь есть идея что происходит?? Эта двойная развертка выглядит очень странно для меня.
Спасибо! Вы правы, rocketShips - это SKNode. Его дочерние элементы создаются в классе пользовательских узлов (разноцветные уровни ракеты). Я также пробовал rocketNode.applyRecurringForce(), но был заблокирован ошибкой «AnyObject не имеет члена с именем« applyRecurringForce() ». Кастинг ракеты Sears для детей в RocketMaster решил проблему! –
@ ShaneO'Seasnain Пожалуйста, отметьте мой ответ как принятый, если вы чувствуете, что ваша проблема решена. Удачи вам в вашей игре. –