将 Actor LibGDX 移动到另一个 Actor 的动态坐标

问题描述 投票:0回答:1

请帮助我解决我的问题。我需要将一个 Actor 移动到另一个 Actor 的动态坐标。如果我使用 MoveToAction,Actor 会移动到另一个 Actor 的给定 GetX() 和 GetY() 坐标,但不会跟随它移动。

这个简单的代码将 Actor 移动到另一个 Actor 的旧坐标。我希望游戏元素跟随移动的玩家。:

game_element = new GameContainer();
stage.addActor(game_element);
game_element.addAction(Actions.moveTo(player.getX(), player.getY(), 2));

但是如果我在游戏元素移动到玩家的那一刻移动玩家,那么他就会到达旧坐标,并且不会跟随他。 这如何在 LibGDX 中实现?

libgdx scene2d
1个回答
0
投票
  1. 创建动作来移动三分之二的距离,

  2. 重新计算目标..

  3. 将1和2放在一个序列Action中,将其添加到追逐的Action中..

  4. 重复 1-3 直到靠近。

    无效的chasePlayer(){ xDistance =player.getX()-getX(); yDistance =player.getY()-getY(); int 实际距离 = Mathutils.sqrt(xDistancexDistance + yDistanceyDistance); if(实际距离 < distance_threshold){ // ... Stop chasing player... // .. do target reached part }

     // calculate time based on speed and distance...
     timeForThisMove = actualDistance * 0.66f / mySpeed;
     MoveByAction act1 = (Actions.moveBy(xDistance*0.66f, yDistance*0.66f, timeForThisMove));
    
     Runnable reCalculateTarget = new Runnable() {
             @Override
             public void run() {
                   chasePlayer()
             }
         };
    
     // This will set two actions in sequence.. chase 2/3rd and recalculating 
     game_element.addAction(Actions.sequence(act1, Actions.run(reCalculateTarget));
    

    }

© www.soinside.com 2019 - 2024. All rights reserved.