2016-06-13 15 views
1

私は3つの物理カテゴリを持っています:ヒーロー、グラウンド、壁。私の問題は、地上の物理カテゴリが認識されていないことです。問題を解決するために、ヒーローが壁や地面に衝突したときにビットマスクを印刷しました。ウォールは期待通りに動作し、ビットマスクは2です。しかし、地面は4294967295です(4でなければなりません)。地上には物理学のボディがあり、ヒーローが通過しないので動作します。接地。SpriteKit categoryBitMaskが認識されない

物理学カテゴリ

enum PhysicsCategory:UInt32 
{ 
    case hero = 1 
    case wall = 2 
    case ground = 4 
} 

グランドクラス:

class Ground: SKSpriteNode 
{ 
    var groundTexture = SKTexture(imageNamed: "ground4") 
    var jumpWidth = CGFloat() 
    var jumpCount = CGFloat(1) 

    func spawn(parentNode: SKNode, position: CGPoint, size:CGSize) 
    { 
     parentNode.addChild(self) 
     self.size = size 
     self.position = position 
     self.zPosition = 2 
     self.anchorPoint = CGPointMake(0, 1) 
     self.texture = SKTexture(imageNamed: "ground4") 
     self.physicsBody?.categoryBitMask = PhysicsCategory.ground.rawValue 
     self.physicsBody?.affectedByGravity = false 
     self.physicsBody?.dynamic = false 

     let pointTopRight = CGPoint(x: size.width, y: 0) 
     self.physicsBody = SKPhysicsBody(edgeFromPoint: CGPointZero, toPoint: pointTopRight) 
    } 

didMoveToView:

let groundPosition = CGPoint(x: -self.size.width, y: 30) 
let groundSize = CGSize(width: self.size.width * 3, height: 0) 
ground.spawn(world, position: groundPosition, size: groundSize) 

didBeginContact

let firstBody = contact.bodyA 
let secondBody = contact.bodyB 

if firstBody.categoryBitMask == PhysicsCategory.hero.rawValue && secondBody.categoryBitMask == PhysicsCategory.ground.rawValue || firstBody.categoryBitMask == PhysicsCategory.ground.rawValue && secondBody.categoryBitMask == PhysicsCategory.hero.rawValue 
     { 
      print("contact with the ground!") 
     } 

答えて

1

の後に実際にphysicsBody を作成していますが、カテゴリBitMaskを設定しようとしました。だから、私は私がコメントに感謝を言ってないようになってる知っている...あなたはただ1つのラインアップを移動する必要があります...ゼロにcategoryBitMaskを設定する

func spawn(parentNode: SKNode, position: CGPoint, size:CGSize) 
{ 
    parentNode.addChild(self) 
    self.size = size 
    self.position = position 
    self.zPosition = 2 
    self.anchorPoint = CGPointMake(0, 1) 
    self.texture = SKTexture(imageNamed: "ground4") 
    let pointTopRight = CGPoint(x: size.width, y: 0) 

    self.physicsBody = SKPhysicsBody(edgeFromPoint: CGPointZero, toPoint: pointTopRight) 

    self.physicsBody?.categoryBitMask = PhysicsCategory.ground.rawValue 
    self.physicsBody?.affectedByGravity = false 
    self.physicsBody?.dynamic = false 
} 
+1

をしようとしています、しかし、私はそれを危険にさらします...ありがとう!!!! – squarehippo10

関連する問題