gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:45:21 31 4
gpt4 key购买 nike

我有两个问题:
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/

31 4 0
文章推荐: excel - 在Excel中,通过排序空白字符应该排在第一位
文章推荐: vba - ActiveSheet.UsedRange.Columns.Count - 8 是什么意思?
文章推荐: java - 在 List 中,如何保留最新条目并删除具有相同字段的先前条目?