代码之家  ›  专栏  ›  技术社区  ›  mrpsihopath

cocos2d-x:幻体碰撞

  •  0
  • mrpsihopath  · 技术社区  · 11 年前

    我正在用cocos2d-x v3.2开发一款游戏,在那里我有块从屏幕顶部掉下来。当它们到达地面时,它们会断裂。 通过schedule()调用generateBlock方法不断创建新块。 使用以下代码创建新块:

      newBlock = new Blocks(newPoint, false);
      newBlock->drawBlock(this, BLOCK_ZORDER);
    

    并用以下代码删除:

    if(BLOCKS_BITMASK == contact.getShapeA()->getBody()->getCollisionBitmask())
    {
        contact.getShapeA()->getBody()->removeFromWorld();
        layer->removeChild(contact.getShapeA()->getBody()->getNode());
    
    }
    else
    {
        contact.getShapeB()->getBody()->removeFromWorld();
        layer->removeChild(contact.getShapeB()->getBody()->getNode());
    }
    

    一切都很好,除了有时块不会生成(它既不会出现在我跟踪块生成的CCLog()中,也不会出现在屏幕上),尽管生成的时间已经到来。不存在的幻影体与地面发生碰撞(我看到这是由于产生的粒子和日志中的“阻挡撞击地面”)。

    1 回复  |  直到 11 年前
        1
  •  0
  •   mrpsihopath    11 年前

    终于发现了问题所在。我没有使用纹理缓存。我以为cocos2dx v3.2可以自动生成精灵,他实际上可以,但不知为什么精灵没有缓存,所以它们就消失了。在我将它们预加载到场景的init()方法中后,它们不再消失。