user9079075
user9079075

Reputation:

SpriteKit: Objects go underneath each other

I have two tanks in my game, one red and one blue.

I've set their PhysicsBody, but instead of hitting each other, they go underneath each other.

Simulator Screenshot (1)

PhysicsCategory :

struct physicsCategory {
    static let Bullet : UInt32 = 0x1 << 0
    static let Enemy : UInt32 = 0x1 << 1
    static let MainTank : UInt32 = 0x1 << 2
    static let EnemyTank : UInt32 = 0x1 << 3
}

Here's the blue tank code :

MainTank = (self.childNode(withName: "tank") as? SKSpriteNode)!
MainTank.name = "blueTank"

MainTank.physicsBody?.categoryBitMask = physicsCategory.MainTank
MainTank.physicsBody?.collisionBitMask = physicsCategory.Enemy
MainTank.physicsBody?.contactTestBitMask = physicsCategory.Enemy

Red tank's:

enemyTank = SKSpriteNode(imageNamed: "tank_red")
enemyTank.size = CGSize(width: 76, height: 92)
enemyTank.name = "enemyTank"
enemyTank.zPosition = 0
enemyTank.physicsBody = SKPhysicsBody(rectangleOf: enemyTank.size)
enemyTank.physicsBody?.categoryBitMask = physicsCategory.EnemyTank
enemyTank.physicsBody?.collisionBitMask = physicsCategory.Enemy
enemyTank.physicsBody?.contactTestBitMask = physicsCategory.MainTank

enemyTank.physicsBody?.isDynamic = false

Upvotes: 1

Views: 43

Answers (1)

KissTheCoder
KissTheCoder

Reputation: 679

Just change the line

enemyTank.physicsBody?.collisionBitMask = physicsCategory.Enemy

To

enemyTank.physicsBody?.collisionBitMask = physicsCategory.MainTank

Upvotes: 3

Related Questions