1
私は2つのSkSpritenodesを追加したGameScene.sksを持っています。このコードは、トランポリンのオブジェクトに物理的なボディーなどを与えますが、実行するとその状態になります。最初のトランポリンだけが体を持っています。Spritekit |スイフト3 | GameScene.sks - 物理プロパティは1つのSKSpritodeodeにのみ適用されます
なぜ同じ名前のすべてのノードに適用されないのでしょうか?
//Trampoline
var trampoline: SKSpriteNode?
override func didMove(to view: SKView) {
trampoline = childNode(withName: "trampoline") as? SKSpriteNode
trampoline?.physicsBody = SKPhysicsBody.init(rectangleOf: (trampoline?.size)!)
trampoline?.physicsBody?.affectedByGravity = false
trampoline?.physicsBody?.isDynamic = false
trampoline?.physicsBody?.usesPreciseCollisionDetection = true
trampoline?.physicsBody?.restitution = 1
}
trampolineNodeはSKNodeとして扱われています。したがって、物理的ボディのTrampolineNode?.sizeは機能しません。どのようにしてtrampolineNodeをSKSpritenodeと宣言できますか? – user3482617
心配しないで、それを理解しました。 trampoline.physicsBody = SKPhysicsBody.init(rectangleOf:CGSize(width:(trampoline.frame.size.width/2)、height:(trampoline.frame.size.height/2)) – user3482617
にPhysicsボディステートメントを修正するだけでした。 @ user3482617良いですが、 'let trampoline = trampolineNode as SKSpriteNode'という名前でキャストすることもできます。これは、enumerateChildNodeがSKNodesだけを返すため非常に一般的です。 –