【问题标题】:Keep SKNodes from applying force to each other防止 SKNode 相互施力
【发布时间】:2014-02-15 17:10:56
【问题描述】:

我有两个 SKNode 对象。当它们碰撞时,它们的位置会发生变化。

如何防止这种情况发生?同时,我仍然希望能够通过- (void)didBeginContact回复他们的联系方式;

我尝试将他们的mass 属性都设置为0.0f,但没有奏效。

【问题讨论】:

    标签: ios macos sprite-kit game-physics


    【解决方案1】:

    您可以通过设置类别、碰撞和接触位掩码来实现。

    uint32_t bodyABitMask = 1<<0;
    uint32_t bodyBBitMask = 1<<1;
    
    //A mask that defines which categories this physics body belongs to.
    [bodyA setCategoryBitMask:bodyABitMask];
    [bodyB setCategoryBitMask:bodyBBitMask];
    
    //A mask that defines which categories of physics bodies 
    //can collide with this physics body.
    [bodyA setCollisionBitMask:0];
    [bodyB setCollisionBitMask:0];
    
    //A mask that defines which categories of bodies cause 
    //intersection notifications with this physics body.
    [bodyA setContactTestBitMask:bodyBBitMask];
    [bodyB setContactTestBitMask:bodyABitMask];
    

    在上述情况下,bodyA 和 bodyB 不能碰撞,但是一旦它们接触,您就会收到 didBeginContact。

    【讨论】:

    • 太棒了!我正在寻找collisionBitMask 属性。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2011-06-01
    • 2023-02-03
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多