我正在尝试使用Box2d实现Libgdx的搜索行为,以实际在屏幕上移动身体。 我理解搜索行为是如何工作的,并且我有两个实现Steerable接口的对象类。我看过Seek类,我不太明白SteeringAcceleration是如何使用它的。
目前我(这些是相关位): 在我的游戏/渲染/主要世界类中:
//fields
Seek<Vector2> s;
Object a;
Object b;
//constructer
s = new Seek<Vector2>(b,a);
s.setEnabled(true);
//run
s.calculateSteering(//not sure what to put here for SteeringAcceleration param?);
在我的对象类中:
public float getMaxAngularAcceleration() {
return 5;//not sure what to put here yet
}
@Override
public Vector2 getPosition() {
return new Vector2(sprite.getX(), sprite.getY());
}
^^这些似乎是我需要为Seek改变的唯一Steerable方法。
我已经阅读了关于行为的libgdx教程,我在理论上理解它们,但我不能为我的生活弄清楚如何将它们放在代码中。我知道我必须要对身体施加力或冲动才能让它真正去到calculateSteering告诉它的地方,但我不知道在哪里执行它以及究竟要放在计算转向的参数中。任何帮助将不胜感激。
答案 0 :(得分:1)
SteeringAcceleration只是一个包含搜索行为计算的线性和角加速度的类。
SteeringAcceleration<Vector2> steerAcc = new SteeringAcceleration<Vector2>();
s.calculateSteering(steerAcc);
然后在您的更新方法中,将SteeringAcceleration中的加速度值应用于box2d正文。
body.applyLinearImpulse(steerAcc.linear.scl(deltaTime), pos, true);
body.applyAngularImpulse(steerAcc.angular * deltaTime, true);