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

cocos2d/box2d:覆盖/忽略特定对象的box2d位置

欧阳昊阳
2023-03-14

我有一个游戏角色,它位于一个棱柱形关节的中心,只能垂直移动(跳跃)。在初始化时,我在屏幕上加载各种游戏障碍,当“产生”时,这些障碍会从屏幕外向角色移动。最好我想用cocos2d位置更新来控制游戏障碍运动的重新定位,而不是box 2d速度控制。

基本上,我希望我的游戏角色能对游戏障碍做出反应,但我不希望游戏障碍对游戏角色做出反应,我希望能够在box 2d之外改变游戏障碍的位置。

我试着只更新游戏角色的身体,而不是所有的身体,但是很明显,我看到我的障碍精灵在没有身体的情况下移动。我不认为碰撞过滤是可行的。任何建议都值得赞赏。

共有1个答案

柳英豪
2023-03-14

在这里回答我自己的问题......

我认为运动体是这里的诀窍。我不认为它更喜欢以非物理的方式移动身体(如set变换),而是使用线性速度。i

 类似资料:
  • 我需要根据收到的表单游戏中心服务器的位置移动box 2d主体。 收到体位后,我只需使用以下命令更新体位:- 但它以不受许可的方式移动身体(例如,身体在屏幕上显示出一些人)。同时我的精灵形象不动(附身)。

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

  • Box2D 是一个开源的 C++ 2D物理引擎。

  • 平铺贴图对象以像素表示x、y位置,以度表示旋转。 我正在从地图上加载坐标和旋转,并试图将它们指定给box2d实体。位置模型之间存在一些差异,例如平铺对象旋转以度为单位,而box2d躯干角度以弧度为单位。 如何将位置转换为BodyDef坐标x、y和角度,以便在正确的位置创建实体? 使用代码: 当旋转为0时工作,但当旋转不同于0时,主体定位不正确。 我在这里找到了一些提示: http://www.tu

  • 在中,据我所知,对象有一个默认的碰撞响应,可以让它们停止移动或反弹回来(如果您设置了恢复)。 您还可以说,该对象是一个传感器,因此您可以实现自己的碰撞响应。 现在我想对某些类型的碰撞使用默认的碰撞响应,而我想完全控制与特定对象的碰撞。 例如:如果玩家与墙壁相撞,则应该停止运动或反弹,但当他与子弹相撞时,它应该松动Hp,子弹应该被移除。 所以我想有类似于接触过滤器,但与过滤器不匹配的对象应该以默认行

  • 我正在制作一个塔防游戏,因为我希望制作很多投射物,所以我想我会把它们放在一起。然而,我的投射物有用于碰撞检测的身体场和固定装置,当我对投射物调用free()时,它们的身体仍然存在。 所以我试图用世界毁灭尸体。destroyBody(),但这会导致空指针错误,除非我在外部显式执行。通过像我在这里学到的那样标记我的对象。但是,当我尝试实现这种方法来摧毁尸体时,出现了一些错误,因为被摧毁的尸体与释放弹丸