gpt4 book ai didi

java - 遵循 LibGdx 中的路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:14 24 4
gpt4 key购买 nike

我有在 libGdx 中输出路径的代码:

public Target(Vector2 villager, Vector2 target){
pathFinder = new IndexedAStarPathFinder<Node>(LevelManager.graph, false);

int startX = (int) villager.x;
int startY = (int) villager.y;

int endX = (int) target.x;
int endY = (int) target.y;

Node startNode = LevelManager.graph.getNodeByXY(startX, startY);
Node endNode = LevelManager.graph.getNodeByXY(endX, endY);

pathFinder.searchNodePath(startNode, endNode, new HeuristicImp(), resultPath);
Gdx.app.log("Path", ""+ resultPath.getCount());

}

我的问题是,有没有一种方法可以在不使用转向行为的情况下使用 resultPath 来实现移动?一些容易掌握和实现的东西?我说的是根据输出路径移动 Sprite 的 x 和 y。帮助将不胜感激!

最佳答案

您只需将 Sprite 从 currentPosition 移动到 nextPosition - 您可以将这些值存储在 Vector2 中类实例。

您将在 render() 方法中更新 Sprite 的位置,例如

    Vector2 currentPosition, nextPosition;
final float SPEED; //how fast sprite will be moved

//render()
Vector2 step = nextPosition.cpy().sub(currentPosition).nor().scl(SPEED);
sprite.setPosition(sprite.getX() + step.x, sprite.getY() + step.y);

然后你必须检查你的 Sprite 是否达到了 nextPosition(或者更确切地说,如果它的距离足够小),如果是,你必须设置新的 nextPosition

    if(nextPosition.cpy().sub(sprite.getX(), sprite.getY()).len() < SOME_LENGTH) {
nextPosition = getNextPosition();

如果没有新的 nextPosition 获取那么新的 nextPosition 值应该只是 Sprite 的位置(以保持它在原位)

关于java - 遵循 LibGdx 中的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com