ios - 混合 Box2D 加速度计 + 重力?

标签 ios cocos2d-iphone box2d gravity

我有两个问题:
1. 是否可以检索 b2Body 的当前 X 坐标?我知道 API GetPosition 但这还不够具体,我需要专门的 X 坐标。
2. 是否可以在我的 UIAccelerometer 委托(delegate)方法中为我的特定 b2Body 添加重力?

我想要做的是使用Apply Force 将带有Box2D 重力的当前UIAccelerometer 输入的b2Body 移动到一行中。
这就是我到目前为止所拥有的,没有人知道我如何将#1+#2 合并到这一行中吗?:

body->ApplyForce(b2Vec2(accelX*100, -30.0f), body->GetPosition());

谢谢!

编辑1:
感谢您回答这些问题,这让我明白了!
这给我留下了另外 3 个问题:
1 .现在我了解了如何获取 b2Body 的 x 坐标,我将如何设置它?
会是这样吗?
body->GetPosition().x = 30;

2 .使用这些 x 坐标,它与我使用 UIKit 时的 X 坐标相同吗?我知道 UIKit 框架的东西不同我只是想确保如果我在 UIKit 中做了类似的事情,它会输出相同的 X 坐标,对吗?

最佳答案

回答 1)

b2Vec pos = body->GetPosition();
float x = pos.x;
// do whatever you need to do with x

你也可以写
float x = body->GetPosition().x;

回答 2)

将 UIAccelerometer didAccelerate 方法所需的任何值存储在实例变量中。例如加速X:
accelX = acceleration.x;

在您的世界更新方法中,只需使用这些值以您需要的任何方式计算力。然后像您发布的那样施加力:
body->ApplyForce(b2Vec2(accelX*100, -30.0f), body->GetPosition());

关于ios - 混合 Box2D 加速度计 + 重力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016409/

相关文章:

ios - 根据 cocos2D 和(?)iPad 上的 Box2d 的触摸轮动画?

box2d - Libgdx box2D 中的碰撞对某些物体失败

Java/LibGDX : Get custom object properties on box2D collision

ios - 带有预加载图像的 iPhone 表格 View

ios - 如何解决位置:fixed for a button at the bottom of the screen in iOS (ipad/iphone)?的问题

iphone - NSMutableArray具有相同的引用

iphone - 如何使用Cocos2D检测iPhone的震动?

ios - 随机扫描每个坐标

box2d - 当 Box2D 主体在时间步外被破坏时,Contact Listener 崩溃

ios - Xcode 4 不允许我打开在 Xcode 5 中编辑的 Storyboard