【问题标题】:Whats the best way to move AI? LibGDX - PONG game移动 AI 的最佳方式是什么? LibGDX - 乒乓球游戏
【发布时间】:2014-08-21 21:32:24
【问题描述】:

目前正在制作 Pong 游戏。我希望 player2 桨(计算机)根据球的位置从左到右跟随球。我有这个

position.x = position.x + playerVectorX;    

        if(ballPong.getPosition().x < position.x){
            System.out.println("left");
            playerVectorX *=-1;
        }

        if(ballPong.getPosition().x > position.x){
            System.out.println("right");
            playerVectorX *=-1;
        }

我猜这是对的,但我错了。桨只是在很短的距离内非常快速地从左到右。

有什么想法吗?

【问题讨论】:

    标签: java libgdx physics collision


    【解决方案1】:

    为什么不直接去

    position.x = ballPong.getPosition().x;
    

    ?

    【讨论】:

    • 这不会让人类玩家无法玩游戏吗?
    • 因为像@jdphenix 说我不想让它成为不可能。我希望它在 x 方向上缓慢移动到球。并且希望能够在计算机变得更快或更慢并且球变得更小的情况下添加电源上升/下降:))
    • 好的,知道了。首先,使用增量。我不使用 libgdx,但每个游戏制作库都有它。 position.x += delta_in_sec * PlayerVectorX。然后当球靠近球员时设置 PlayerVectorX = 0;
    • 完美。我thankyou :))))) 我想知道为什么这行得通,但只使用 playerVectorX 不行? ?
    【解决方案2】:

    你的问题是,每次它需要向右走时,它都会改变方向。你应该做的是这样的:

    position.x = position.x + playerVectorX;    
    
        if(ballPong.getPosition().x < position.x){
            System.out.println("left");
            playerVectorX = Math.abs(playerVectorX);
        }
    
        if(ballPong.getPosition().x > position.x){
            System.out.println("right");
            playerVectorX = Math.abs(playerVectorX) * -1;
        }
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多