私は、book swift 3ゲーム開発の指示に従って、フラップゲームに簡単なタップを作成します。 私は2つのSKSpriteNodesを持っています。1つはプレーヤーで、もう1つは静的オブジェクトで、接触した場合にプレイヤーを傷つける可能性があります。プレーヤーSKPhysicsBodyは他のSKPhysicsBodyスイフト4を通過します。Xcode 9
プレーヤーの損傷は、カテゴリBitMaskのカスタム連絡先ロジックを使用して実装されます。問題は、静的オブジェクトのcategoryBitMaskを設定してから、プレイヤーが静的オブジェクトと接触してカスタムロジックがトリガーされたときにプレイヤーが静的オブジェクトを移動するときです。ここで
は、プレイヤーと静的オブジェクトの両方
静的オブジェクトのためのinit()関数
init() {
super.init(texture: nil, color: .clear, size: initialSize)
createAnimations()
self.run(spinAnimation)
let startTexture = textureAtlas.textureNamed("blade")
self.physicsBody = SKPhysicsBody(texture: startTexture, size: initialSize)
self.physicsBody?.affectedByGravity = false
self.physicsBody?.isDynamic = false
self.physicsBody?.categoryBitMask = PhysicsCategory.enemy.rawValue
self.physicsBody?.collisionBitMask = ~PhysicsCategory.heroDamage.rawValue
self.zPosition = -9
}
プレーヤー
init() {
super.init(texture: nil, color: .clear, size: initialSize)
let textureBody = textureAtlas.textureNamed("pierre-flying-3")
self.physicsBody = SKPhysicsBody(texture: textureBody, size: self.size)
self.physicsBody?.linearDamping = 0.9
self.physicsBody?.mass = 30
self.physicsBody?.allowsRotation = false
self.zPosition = 1
createAnimations()
self.run(soarAnimation, withKey: "soarAnimation")
self.physicsBody?.categoryBitMask = PhysicsCategory.hero.rawValue
self.physicsBody?.contactTestBitMask = PhysicsCategory.ground.rawValue |
PhysicsCategory.enemy.rawValue |
PhysicsCategory.coin.rawValue |
PhysicsCategory.powerUp.rawValue
self.physicsBody?.collisionBitMask = PhysicsCategory.ground.rawValue
}
は、私はその後、isDynamic =偽の条件を削除する場合ははい、それは作品ですオブジェクトはもはや静的ではありません。私はオブジェクトの質量を増やして、isDynamic = falseも取り除こうとしました。しかし、いくつかの奇妙な理由のために、これはIsDynamic = falseステートメントを含めるのと同じ効果があります
何か助けてください?おかげ
編集 categoryBitMaskの列挙は場所を取るために、衝突ためにダイナミックをするニーズを衝突しなければならない2つのノード
enum PhysicsCategory:UInt32 {
case hero = 1
case heroDamage = 2
case ground = 4
case enemy = 8
case coin = 16
case powerUp = 32
}
ヒーローは、デフォルトでisDynamic = trueに設定されています。私はちょうどヒーローのinit()に行を追加しようとしましたが、結果は同じです。 – hoboBob
PhysicsCategory-enumを回答に追加できますか?それは助けるかもしれない。 – Christoph