【问题标题】:Mixing Box2D Accelerometer + Gravity?混合 Box2D 加速度计 + 重力?
【发布时间】:2011-11-04 22:25:54
【问题描述】:

我有两个问题:
1. 是否可以检索 b2Body 的当前 X 坐标?我知道 API GetPosition 但不够具体,我需要专门的 X 坐标。
2. 是否可以在我的 UIAccelerometer 委托方法中为我的特定 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 坐标,对吗?

【问题讨论】:

    标签: ios cocos2d-iphone box2d gravity


    【解决方案1】:

    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 方法中所需的任何值存储在实例变量中。例如加速器:

    accelX = acceleration.x;
    

    在您的世界更新方法中,只需使用这些值以您需要的任何方式计算力。然后像您发布的那样施加力:

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

    【讨论】:

      【解决方案2】:

      1) 1) body->GetPosition().x

      1) 2) 要么施加力,要么改变世界的重力。

      2) 1) 你使用 SetPosition(b2Vec2)。

      2) 2) Box2d 坐标除以 PTM_RATIO,0,0 在 box2d 的左下角,但在 UIKit 的左上角。

      【讨论】:

      • 所以如果我想检索 X 坐标 UIKit 样式但使用 Box2D 我必须将 X 坐标除以 PTM 比率? 2.1 也一样吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 1970-01-01
      • 2012-09-18
      • 2020-11-14
      • 2011-05-08
      • 2011-10-18
      相关资源
      最近更新 更多