问题标签 [box2d-iphone]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1851 浏览

ios - Ropes in cocos2d/box2d

Hello guys I have been experimenting with Cocos2d and box2d recently. I am trying to draw ropes as in games like Bunny Shooter, Cut the rope etc.. But I did not get any leads. I found out a class called VRope, but I am pretty unsure how to use it.

What I aim to produce is something like a hanging rope which when cut at a point produces animation similar to real ropes pretty like in the Bunny Shooter etc.. I have found this in many games. Any one having any idea?

It would be great if you could give me some hints or a good tutorial link.

Thank You

0 投票
3 回答
542 浏览

objective-c - 声明包含 c++ 类类型 ivar 的 obj-c 类接口

目前我正在做一个 cocos2d+Box2D 项目,所以我处理了一些 Objective-C++ 代码。

我正面临这样的情况:

b2Body 和 b2Fixture 是在 Box2D.h 中定义的 C++ 类

如果 BasicNode 的实现被命名为 BasicNode.mm,它就可以工作。

但是如果我有另一个名为 Game.m 的文件正在使用 BasicNode 并导入 BasicNode.h,它将无法编译,因为 .m 文件是 Obj-C 文件并且不了解 C++ 代码。

所以我决定将#import "Box2D.h" 移动到实现文件中,并且只在头文件中保留类型声明(这正是头文件应该包含的内容)。

但是我该怎么做呢?它们是 C++ 类类型,但它们实际上只是一个指针,所以我写了一些辅助宏

只有当 CLS_DEF(b2Body) 只出现一次时,它才有效。否则编译器会找到同名的多个类型声明,即使它们是相同的。比我必须改变

它现在正在工作。

但我认为将 C++ 类类型声明为 Obj-C 类并不是一个好主意,尤其是我使用的是 ARC。

有没有更好的方法来处理它?而且我真的不想做这样的事情

编辑:另外请告诉我我的调整方式会引入任何问题吗?通过使 C++ 类 ivar 看起来像其他纯 Obj-C 代码的 Obj-C 类。

0 投票
0 回答
480 浏览

box2d - Box2D 计算身体可以旋转的运动方向

在我自上而下的汽车物理学中,我试图找到汽车的行驶方向。

我可以得到汽车的线速度,但我遇到了问题,因为:

  • 汽车可以旋转并朝任何方向看
  • 汽车可以前进和后退

基本上可以告诉我汽车是向前行驶还是倒车!

0 投票
1 回答
537 浏览

ios - 在 iOS 游戏中获取所有连接的 b2Body

我正在用 cocos2d、box2d 为 iPhone 开发一款 iPhone 游戏。我这里有一个问题。 在此处输入图像描述

从上面的截图可以看出,这些球是 b2Body。一切顺利,除了一件事。当我点击一个球时,我希望将其从屏幕上移除,并且效果很好。

但是,我也需要删除所有具有相同颜色的连接球。例如,当我点击底部的红球时,与这个被点击的球相交的每个红球也应该被移除。

此方法管理点击位置

“destroyBall”方法是递归方法,写法如下

这个想法很简单,当A球被轻敲时,它会寻找周围正在击球A球的其他球。如果是B球,则该过程将再次与B球一起进行,直到没有击球球为止。

但是,递归函数似乎不停地运行:(

如果您有任何想法或任何算法来使用 box2d 执行此功能,我将不胜感激

非常感谢您的支持。

0 投票
2 回答
1110 浏览

cocos2d-iphone - 如何在box2d中获取碰撞位置

在box2d中获得碰撞点的最佳方法是什么?我将它与 cocos2d 和 Objective C 一起使用,但我想 API 在其他语言中是相似的。使用 b2ContactListener 类将生成 b2Contact 对象,但我找不到任何有关联系人位置的信息。

0 投票
2 回答
855 浏览

ios4 - 如何在 cocos2d 中的场景中将屏幕方向锁定为横向?

我正在使用 box2d 进行 ios 应用程序开发。我想将设备方向固定为横向左侧,这是 cocos2d 中的默认设置。

我将如何锁定屏幕方向以使其在用户播放时无法更改?

0 投票
1 回答
3000 浏览

cocos2d-iphone - 像 CCSprite 对象一样移动 Box2d 实体

在 cocos2d 中,您可以在 CCSprites 中缓和并以各种方式移动它们。最重要的是 - 他们可以缓进/缓出。对于大多数游戏来说,这对于平滑移动等来说是可取的。

移动 box2d 主体时,附加到它的精灵在 box2d step() 之后更新。移动精灵然后更新身体在这里不是一个选择,因为它完全违背了物理框架的目的。

因此,我已经成功实现的另一个选项是通过将精灵本身视为一个力学实体来计算精灵的位移、速度和加速度。每次我在 sprite 上调用我的 update() 以便角色可以决定移动的位置等时,我的超类也会存储之前的位置和速度。这些通过除以 PTM_RATIO 存储为符合 box2d 的值。

在 CCSprite 的子类中,称为 FMSprite:

然后,我将“FMSprite”子类化为“FMObject”,其中存储了 b2Body 等。

为了移动身体,我必须首先移动一个精灵并跟踪它的加速度,通过它我可以找到跟随精灵运动所需的力(使用质量)。由于我无法移动对象的精灵(与身体同步),我制作了另一个名为“信标”的精灵,将其作为子对象添加到对象中,然后移动它。然后我们需要做的就是使用我之前提到的力使 box2d 主体的位置与这个信标精灵同步。

结果非常出色,b2body 的平滑缓动运动可以随心所欲地移动,无需使用任何自身的力,而是复制 CCSprite 的力并复制其运动。由于都是力,所以在与其他 b2Body 对象碰撞时不会引起抖动和失真。如果有人有任何其他方法可以做到这一点,请发布答案。谢谢!

0 投票
1 回答
2274 浏览

ios - 有什么方法可以在 Box2D 中绘制凹多边形并检测与其他形状的碰撞

我是 Box2D 物理引擎的初学者。当我有一个不规则曲线的图像时,我正在尝试开发多边形。但是参考使用 Vertex Helper 的 Raywenderlich 演示教程,我正在绘制多边形,但在许多情况下它会产生凹多边形,并且当我执行我的项目时它会崩溃。所以如果可以获得一些关于凹面使用的帮助多边形会很棒。

任何帮助或建议表示赞赏。谢谢

0 投票
1 回答
403 浏览

cocos2d-iphone - 为几乎 0 厚度的 box2d iphone 设置一条线(边缘)作为主体

我正在尝试添加一条线作为 box2d 主体,厚度几乎为 0 或 1 像素。我尝试使用很多方法,如 setasedge、setasbox,但我无法得到它。

并且对于 b2EdgeShape 显示它不存在。我包含在 box2d 参考 api 中。你能建议我画一条几乎为零粗细的线吗?

0 投票
2 回答
2586 浏览

cocos2d-iphone - 使 Box2d 对象遵循预定路径

我正在制作一个游戏,其中某个对象(建模为 box2d 主体)必须遵循固定路径。有没有一种方法可以指定路径坐标并使每个 dt 的对象在其上前进?

谢谢