边界碰撞检测

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

【讨论】:

以上是关于边界碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章

四边形OpenGL之间的碰撞检测

actionscript 2 碰撞检测

Pygame碰撞检测

pygame.mask原理及使用pygame.mask实现精准碰撞检测

pygame.mask原理及使用pygame.mask实现精准碰撞检测

pygame.mask原理及使用pygame.mask实现精准碰撞检测