边界碰撞检测
Posted
技术标签:
【中文标题】边界碰撞检测【英文标题】:Border collision detection 【发布时间】:2016-01-06 01:12:36 【问题描述】:我正在使用 Sprite Kit 制作游戏,我的碰撞检测设置如下:
ball.physicsBody?.categoryBitMask = ballCategory
borderBody.physicsBody?.categoryBitMask = borderCategory
还有处理程序-didBeginContact()
:
func didBeginContact(contact: SKPhysicsContact)
var firstBody = SKPhysicsBody()
var secondBody = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
firstBody = contact.bodyA
secondBody = contact.bodyB
else
firstBody = contact.bodyB
secondBody = contact.bodyA
if firstBody.categoryBitMask == ballCategory && secondBody.categoryBitMask == borderCategory
print("You Lose!")
我也有这一行来设置联系人代表:
self.physicsWorld.contactDelegate = self
但是当我运行游戏时,没有检测到碰撞,也没有任何反应。怎么了?
【问题讨论】:
你需要定义contactbitmasks,你可以在这里搜索更多信息 【参考方案1】:请参阅documentation here。如果您想接收联系人/路口通知,您需要设置contactTestBitMask
。与collisionBitMask
的默认值为0xFFFFFFFF
不同,contactTestBitMask
的默认值为0x00000000
。
【讨论】:
以上是关于边界碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章
pygame.mask原理及使用pygame.mask实现精准碰撞检测