2016-08-03 9 views
0

私は簡単なスプライトキットゲームを作っています。私はすべての物理学をセットアップしています。私は接触を検出するために適切なcategoryBitMasksとContactTestBitMaskを追加しました。contactTestBitMaskは検出されませんでした。SwiftKitのBigginContact(ログ)

私はアプリを実行すると、私は接触を持っているが、それは私がこれによって得るように見えるカントプリント(「接触」)

を追加didBeginContactのログには表示されません。おそらくこれに最もよく似た質問とチュートリアルをすべて見てきました。

私は2種類の方法

enum ColliderType : UInt32 { 
    case None = 0 
    case All = 0xFFFFFFFF 
    case enemy = 0b001 
    case hero = 0b010 
    case screen = 0b100 
} 

let heroCategory :UInt32 = 0x1 << 0 
let screenCategory:UInt32 = 0x1 << 1 
let enemyCategory:UInt32 = 0x1 << 2 
let scoreCategory:UInt32 = 0x1 << 3 

を試してみました。その奇妙な私は接触を持っているが、それは、ログには印刷されませんか。

私は動いている背景を持ち、敵を英雄に向かって動かしています。主人公は敵をかわすように動きます。

私はそれが必要な場合、私は、コードをアップロードすることができ

if self.movingParts.speed > 0 { 
     self.movingParts.speed = 0 

とtouchesBegan機能

で速度の設定を設定することで、ゲームを停止しますかどうかを確認するために、「ゲームオーバー」機能を追加してみました。私にお知らせください。

何か助けていただければ幸いです。ありがとう

答えて

0

17日後、私は最終的に私のせいではない解決策を見つけ出しました。

私がしたすべては、ITを

func didBeginContact(contact: SKPhysicsContact) { 
    print("contact") 
} 

を消去し、再入力しました。うわー、奇妙だけど、うまくいった。私はこの問題を他の問題に気づきました(コードを再入力して機能させる)。

0

3つのものを設定する必要があります。

physicsBody.categoryBitMask 
physicsBody.contactTestBitMask 
physicsBody.collisionBitMask 

また、必ずSKPhysicsContactDelegateを設定してください。あなたは、トップ

Class GameScene : SKScene, SKPhysicsContactDelegate { 

であなたのクラスの後SKPhysicsContactDelegateがあり、

self.physicsWorld.contactDelegate = self 

は、あなたのこれがお役に立てば幸いあなたdidMoveToViewでこれを持っていることを確認する必要があります!

+0

あなたの答えをありがとう。あなたが追加したすべての情報があります。私が言及したように、私はエラーや警告なしでアプリケーションを実行します。 – hka

+0

ああ、私はあなたが '連絡先を印刷'しているコードを参照する必要があります –

関連する問題