使用libgdx寻找box2d的行为?

时间:2014-12-31 02:24:56

标签: java libgdx box2d behavior

我正在尝试使用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告诉它的地方,但我不知道在哪里执行它以及究竟要放在计算转向的参数中。任何帮助将不胜感激。

1 个答案:

答案 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);