多次检测到碰撞

Posted

技术标签:

【中文标题】多次检测到碰撞【英文标题】:collision detected more than once 【发布时间】:2015-08-18 02:33:38 【问题描述】:

我正在做一个射击游戏,到目前为止我遇到的问题是,当子弹与敌人碰撞并调用函数更新分数时,他们调用该函数大约 10 次,这是我的 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 == CollisionCategories.Bullet) &&
        (secondBody.categoryBitMask == CollisionCategories.Enemy) 

            println("Hit")
            firstBody.node!.removeFromParent()
            secondBody.node!.removeFromParent()
            //change score
            updateScore(1)

    

【问题讨论】:

【参考方案1】:

我遇到的问题是 Enemy 将其物理体配置为大小纹理,通过将其从纹理更改为 circleOfRadius,工作正常。

发件人:

Enemy.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())

收件人:

Enemy.physicsBody = SKPhysicsBody(circleOfRadius: (Enemy.size.width/2))

【讨论】:

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

在发生碰撞之前检测到碰撞

Sprite Kit中的碰撞检测未检测到碰撞

Sprite 套件中的 SKShapeNode 碰撞检测未检测到碰撞

未检测到 spritekit 物理碰撞

JavaScript动画-碰撞检测

unity3d 怎么检测碰撞?比如主角碰撞到物体之后销毁被撞到的物体