【发布时间】:2017-06-13 08:41:00
【问题描述】:
我有需要为单个纹理创建两个 SKPhysicsBody 的情况,因为碰撞响应需要不同
let leftBigBox = SKPhysicsBody(rectangleOf :CGSize(width: 490, height: 90) , center:bCenterPoint )
leftBigBox.contactTestBitMask = category_kitty
leftBigBox.categoryBitMask = category_train
leftBigBox.collisionBitMask = category_kitty | category_track
let rightSmallBox = SKPhysicsBody(rectangleOf :CGSize(width: 100, height: 45) , center:sCenterPoint )
rightSmallBox.categoryBitMask = category_wagon
rightSmallBox.collisionBitMask = category_kitty | category_track
rightSmallBox.contactTestBitMask = category_kitty
physicsBody=SKPhysicsBody(bodies: [leftBigBox,rightSmallBox])
但是didBegin(_ contact: SKPhysicsContact) 没有检测到我的小猫何时击中子节点。我可以看到它正在发生的调试模式,但委托不会打印,如果我为父物理体指定 collisionBitMask ,contactTestBitMask 它可以工作,但我的目标是将它们分成两部分
* 我试过用关节和两种不同的纹理,性能太差了
这些是 kitty 的值
physicsBody!.categoryBitMask = category_kitty
physicsBody!.contactTestBitMask = category_wagon | category_border | category_train
physicsBody!.collisionBitMask = category_border | category_wagon | category_train
【问题讨论】:
标签: swift sprite-kit sprite skphysicsbody