2015-01-20 3 views
2

Не удалось применить импульс, получив сообщение об ошибке «не удалось найти участника applyimpulse» на игровой площадке xcode6.1 osx.не удалось найти участника applyimpulse

Код:

func spawnSand() { 

    let sand: SKSpriteNode = SKSpriteNode(imageNamed: "sand") 
    sand.position = CGPoint(x: random(min:0 , max: scene.size.width), 
    y: scene.size.height - sand.size.height) 

    sand.physicsBody = SKPhysicsBody(circleOfRadius: sand.size.width/2) 
    sand.physicsBody!.restitution = 0.9 
    sand.physicsBody!.density = 20.0 
sand.name = "sand" 
scene.addChild(sand) 
} 

func shake() { 

    scene.enumerateChildNodesWithName("sand") { node, _ in 
    node.physicsBody.applyImpulse(
     CGVector(dx:0 , dy: random(min: 20 ,max:40)) 
    ) 
    } 
    } 

ответ

0

node.physicsBody возвращает необязательный. разверните его перед его использованием.

например.

if let SKPhysicsBody body = node.physicsBody { 
    body.applyImpulse(...) 
} 
0

Пожалуйста, попробуйте следующий код и дайте мне знать, если его рабочий ..

функ spawnSand() {

let sand: SKSpriteNode = SKSpriteNode(imageNamed: "sand") 
sand.position = CGPoint(x: random(min:0 , max: scene.size.width), 
y: scene.size.height - sand.size.height) 
sand.physicsBody = SKPhysicsBody(circleOfRadius: sand.size.width/2) 
sand.physicsBody!.restitution = 0.9 
sand.physicsBody!.density = 20.0 
sand.name = "sand" 
scene.addChild(sand)} 

трясти FUNC() {

scene.enumerateChildNodesWithName("sand") { node, _ in 
let impulse = CGVector(dx:random(min: 20 , max:60) ,dy: 
random(min: 20 , max:60)) 
node.physicsBody?.applyImpulse(impulse) 
} 
} 
+0

Спасибо, Правеен, он работает. –

0

К сожалению У меня была странная проблема с этим, когда .applyImpulse не принимал конструктор CGVector, переданный в него. Мне пришлось отделить переменную CGVector, и тогда все сработало правильно. Кроме того, физическое устройство является необязательным, которое необходимо развернуть перед использованием:

func shake() { 
    scene.enumerateChildNodesWithName("sand") { node, _ in 
     let impulse = CGVector(dx: 0, dy: random(min: 20, max: 40)) 
     node.physicsBody?.applyImpulse(impulse) 
    } 

    scene.enumerateChildNodesWithName("shape") { 
     node, _ in 
     let impulse = CGVector(dx: random(min: 20, max: 60), dy: random(min: 20, max: 60)) 
     node.physicsBody?.applyImpulse(impulse) 
    } 
} 
Смежные вопросы