spritekitで2つのノード間の衝突判定がうまく出来ません。
次のコードでsprite1とsprite2の衝突させようとしています。
実機シミュレーションではsprite1が上から落下してsprite2にぶつかって物体として認識はできているのですが、衝突したときに呼ばれるはずのdidBeginが呼び出されません。
print("衝突?")の部分までは実行されますが、didBegin内のprint("衝突認識!")までの実行が行えていない状態です。
以前の質問が冗長であったため簡略化して再度質問させていただきました。
よろしくおねがいします。
swift
1// playScene.swift 2// denkiEido 3// 4// Created by takeuchi tsunehiro on 2019/09/25. 5// Copyright © 2019 takeuchi tsunehiro. All rights reserved. 6// 7 8import Foundation 9import SpriteKit 10import CoreMotion 11 12 13class playScene: SKScene,SKPhysicsContactDelegate { 14 15 16 (中略) 17 18 19 func createEnemy(){ 20 21 22 //ピペットノードの設定 23 let texture = SKTexture(imageNamed:"pipet") 24 let sprite1 = SKSpriteNode(texture:texture) 25 sprite1.position = CGPoint(x:130,y:880) 26 sprite1.size=CGSize(width:texture.size().width*0.5,height:texture.size().height*0.5) 27 sprite1.physicsBody = SKPhysicsBody(texture:texture,size:sprite1.size) 28 sprite1.physicsBody?.isDynamic = true 29 self.addChild(sprite1) 30 31 //ビーカーノードの設定 32 let texture2 = SKTexture(imageNamed: "bika") 33 let sprite2 = SKSpriteNode(texture:texture2) 34 sprite2.position = CGPoint(x:130,y:150) 35 sprite2.size=CGSize(width:texture2.size().width*0.5,height:texture2.size().height*0.5) 36 sprite2.physicsBody = SKPhysicsBody(texture:texture2,size:sprite2.size) 37 sprite2.physicsBody?.isDynamic = false 38 self.addChild(sprite2) 39 40 41 //衝突処理 42 43 sprite1.physicsBody?.categoryBitMask=0b0001 44 sprite2.physicsBody?.categoryBitMask=0b0010 45 46 sprite1.physicsBody?.collisionBitMask=0b0010 47 sprite2.physicsBody?.collisionBitMask = 0b0001 48 49 sprite1.physicsBody?.contactTestBitMask=0b0010 50 sprite2.physicsBody?.contactTestBitMask=0b0001 51 52 //デリゲート先に自分を設定する 53 self.physicsWorld.contactDelegate=self 54 print("衝突?") 55 56 } 57 58 func didBegin(_contact: SKPhysicsContact) { 59 print("衝突認識!") 60 } 61 62 63 64 65 override func didMove(to view: SKView) { 66 let timerTeki = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (Timer) in 67 self.createEnemy() 68 } 69 } 70} 71 72(略) 73 74
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。