初めまして。超初心者です。よろしくお願いします。
赤いボックスと青いボックスを落下させて衝突いた時に赤いボックスを消すイベントを起こしたいのですがシュミレートして見ると衝突しても何も起きません、どうも衝突情報が受け取れていないようなのです。他にも違うプロジェクトで実験してみましてがうまくいきません。
完全に行き詰まってしまいました。お知恵を貸していただけると助かります。よろしくお願いします。
xcode8 と swift3を使っています。
コードです⬇︎
import SpriteKit
class GameScene: SKScene ,SKPhysicsContactDelegate {
private var RedRect : SKShapeNode! private var BlueRect : SKShapeNode! // 衝突に使うBitMask. let redCategory: UInt32 = 0x1 << 0 let blueCategory: UInt32 = 0x1 << 1 let testLabel = SKLabelNode(fontNamed: "Verdana-bold") override func didMove(to view: SKView) { self.backgroundColor = SKColor.white // Sceneに剛体を設定. self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame) // 衝突を検知するdelegateをSKSceneに設定. self.physicsWorld.contactDelegate = self // SKShapeで赤いRectを生成. RedRect = SKShapeNode(rectOf: CGSize(width: 50, height: 50)) RedRect.position = CGPoint(x:375, y:1000) RedRect.fillColor = UIColor.red RedRect.name = "RedRect" // SKShapeで青いRectを生成. BlueRect = SKShapeNode(rectOf: CGSize(width: 100,height: 50)) BlueRect.position = CGPoint(x:375 ,y:700) BlueRect.fillColor = UIColor.blue BlueRect.name = "BlueRect" // 剛体を生成. RedRect.physicsBody = SKPhysicsBody(rectangleOf: RedRect.frame.size) BlueRect.physicsBody = SKPhysicsBody(rectangleOf: BlueRect.frame.size) // 自身のカテゴリーを設定. RedRect.physicsBody?.categoryBitMask = redCategory BlueRect.physicsBody?.categoryBitMask = blueCategory // 衝突先のBitMaskを設定. RedRect.physicsBody?.contactTestBitMask = blueCategory BlueRect.physicsBody?.contactTestBitMask = redCategory testLabel.text = "テスト開始" testLabel.fontColor = SKColor.red testLabel.position = CGPoint(x:375, y:900) self.addChild(testLabel) // sceneにNodeを追加. self.addChild(RedRect) self.addChild(BlueRect) } /* 衝突が検知されたら呼ばれる */ func didBeginContact(contact: SKPhysicsContact) { testLabel.text = "接触開始" print("接続開始") RedRect.removeFromParent() } func didEndContact(contact: SKPhysicsContact) { testLabel.text = "接触終了" print("接続終了") }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。