質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2321閲覧

[swift3] SKPhsicsContact  衝突情報が受け取れないのです。

yohuchan

総合スコア11

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/11/24 05:54

初めまして。超初心者です。よろしくお願いします。
赤いボックスと青いボックスを落下させて衝突いた時に赤いボックスを消すイベントを起こしたいのですがシュミレートして見ると衝突しても何も起きません、どうも衝突情報が受け取れていないようなのです。他にも違うプロジェクトで実験してみましてがうまくいきません。
完全に行き詰まってしまいました。お知恵を貸していただけると助かります。よろしくお願いします。

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("接続終了") }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
どうもswift3では記述が過去のものと大きく異なっているようで、以下の部分を書き換えたら反応しました。

func didBeginContact(contact: SKPhysicsContact)
⬇︎
func didBegin(_ contact: SKPysicsContact)

一緒に考えてくださった方々、貴重なお時間を使わせてしまってすみません。
これからも、まだまだ分からないことが出てくると思いますのでよろしくお願いします。

投稿2016/11/24 07:52

yohuchan

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問