当前位置: 首页 > 知识库问答 >
问题:

Cocos2d Box2d碰撞展望未来

颜瀚漠
2023-03-14

所以我尝试在cocos2d-x中测试与box2d的碰撞。在我的游戏循环中,我移动精灵,而不是使用box2d物理。我确实在box2d中设置了一个实体,这样我就可以正确地设置矩形,但是当它与另一个对象碰撞时,它是重叠的。我想让它停在发生碰撞的地方。我知道它为什么这样做(这是因为它被告知移动8点,碰撞发生在4点),但我不确定如何让它在碰撞的确切位置停止。如果我这样做:

float x = a->getPosition().x + (a->getContentSize().width / 2) + (b->getContentSize().width / 2);
b->setPositionX(x);

它是有效的,但你可以看到它在移动8分和4分后跳跃。我不确定我是否做得完全错误,或者是什么,但我似乎无法让它在不跳跃的情况下停止碰撞。另外,您还可以了解更新的内容:

Vec2 pos = _enemy->getPosition();
pos.x -= _scrollSpeed;
_enemy->setPosition(pos);

_scrollSpeed=8 btw

非常感谢您的帮助。

共有1个答案

南宫博简
2023-03-14

您可以在类中创建一个字段,告诉对象是否正在移动,并在Begincontact中设置为true/false。然后在update()方法中,只需检查是否设置了该字段,就可以知道是否应该移动它。

编辑:记得在世界大战之前检查这个-

 类似资料:
  • 展望未来 Pixi能做很多事情,但是不能做全部的事情!如果你想用Pixi开始制作游戏或者复杂的交互型应用,你可能会需要一些有用的库: Bump: 一个为了游戏准备的完整的2D碰撞函数集. Tink: 拖放, 按钮, 一个通用的指针和其他有用的交互工具集。 Charm: 给Pixi精灵准备的简单易用的缓动动画效果。 Dust: 创建像爆炸,火焰和魔法等粒子效果。 Sprite Utilities:

  • 我下面的碰撞方法有问题。问题是当游戏中有两个敌人时。它与循环中的一个敌人相交,然后返回true进行碰撞。但是如果在这个数组列表中有第二个敌人,它将不会与第二个物体碰撞,因此导致它返回false,玩家继续行走。有什么办法可以让他在接触任何敌人时停下来,而不是因为他没有接触到所有的敌人而继续下去吗?谢谢,这是密码。

  • 你是否看到过车祸?是否跟什么物体相撞过?就像车的相撞一样,刚体对象也可以互相碰撞,当它们互相接触的时候,就认为发生了碰撞。当碰撞发生时,会触发一系列事件,它可以被完全忽略。 碰撞筛选 碰撞筛选允许你启用或者阻止形状之间碰撞的发生,引擎支持使用类型,组位掩码来进行碰撞筛选。 Cocos2d-x 有 32 个支持的碰撞类型,对于每个形状都可以指定其所属的类型。还可以指定有哪些类型可以与这个形状进行碰撞

  • 我正在尝试做一个平台游戏,其中没有斜坡。我正在尝试将碰撞检测降下来,但是我在pygame中找不到一种方法来获得哪一边与另一个Sprite发生了碰撞。有没有人能给我一个好的方法来做到这一点,那不是太庞大,但也能很好地工作在我的情况? 下面是我的玩家类: 我已经将它添加到我的player类中,每次播放器更新时我都运行它,并且它工作...差一点。 在平台顶部的碰撞起作用,在侧面的碰撞几乎总是起作用,除非

  • 我已经寻找并找到了单个碰撞的答案,但我正在寻找一种检测多种类型的碰撞的方法。我正在制作一个游戏,其中有3个我想要的碰撞。用户飞机与敌方子弹相撞,用户子弹与敌机相撞(我已经工作过),敌方子弹与用户子弹相撞。我已经设置并更正了所有类别BitMask和contactTestBitMask。这是我的委托方法。

  • 这是我的碰撞/移动代码 这是PixelPerfectTest函数(不是我的) 编辑:这就是我如何让它工作,以防将来有人需要帮助