gpt4 book ai didi

java - Overlap() 函数在 LIBGDX 中不起作用

转载 作者:行者123 更新时间:2023-11-30 03:15:19 24 4
gpt4 key购买 nike

我正在 LIBGDX 中开发一款网球游戏,在这期间我必须检查 2 名玩家之间的碰撞。当我尝试通过重叠功能检测它与球的任何运动时,只需将它放在球员身上,它确实检测到碰撞,但是当我在球运动期间这样做时,它只检测到两者之一的碰撞播放器……为了您的理解,想象一个球从上到下移动,当球到达我游戏的第二个玩家时,它没有检测到任何碰撞,球从第一个玩家开始检测它的碰撞,但在到达第二个玩家时失败了。 ...为了检查碰撞,在渲染函数中我添加了一个简单的代码

if(this.getBounds().overlaps(game.white_player.getBounds()))
{
System.out.println("Over Lap.");

}

我用矩形包围球和球员以检查碰撞....当我手动将球放在球员上方时,上面编写的代码检测到碰撞....但是当我让球旋转时,我的代码仅针对第一个玩家检测到它,

这是我完整的渲染函数代码..

public void render(float delta) {

game.red_player.update_rec();
game.white_player.update_rec();

if(Gdx.input.isTouched())
{
touchDown(Gdx.input.getX(), Gdx.input.getY(), 1,Input.Buttons.LEFT);

}



if(up==true && down!=true && game.red_player.getBounds().overlaps(this.getBounds()))
{

shape_y+=1;
going_up+=1;

if(going_up > 720)
{
//going_up=200;
//shape_y=200;
System.out.println("yes");
up = false;
down = true;
}

}

if(down == true)
{
shape_y-=1;
going_up-=1;
}

if(shape_y<200)
{
System.out.println("Lallaa");
up=true;
down=false;
//going_up=201;
//sshape_y=201;
}


if(this.getBounds().overlaps(game.white_player.getBounds()) && shape_y==605)
{
System.out.println("Over Lap..");
//up = true;
//down = false;
}

System.out.println(shape_x+" "+shape_y);

game.batch.begin();
game.background.actor.draw(game.batch);
game.red_player.actor.draw(game.batch);
game.white_player.actor.draw(game.batch);
game.batch.end();

stage.draw();

shapes.begin(ShapeType.Filled);
shapes.setColor(1,1,0,0);
shapes.circle(shape_x, shape_y,shape_width, shape_height);
shapes.end();

shapes.begin(ShapeType.Line);
shapes.setColor(0,0,0,0);
shapes.circle(shape_x, shape_y,shape_width+1, shape_height);
shapes.end();

shapes.begin(ShapeType.Line);
shapes.setColor(0,0,0,0);
shapes.rect(game.red_player.position.x,
game.red_player.position.y,game.red_player.width,
game.red_player.height);

shapes.end();

shapes.begin(ShapeType.Line);
shapes.setColor(0,0,0,0);
shapes.rect(game.white_player.position.x, game.white_player.position.y,
game.white_player.width, game.white_player.height);
shapes.end();

shapes.begin(ShapeType.Line);
shapes.setColor(0,0,0,0);
shapes.rect(shape_x-10, shape_y-10, shape_width*2, shape_height/2);
shapes.end();

}

忽略所有未定义的函数...

最佳答案

您可以尝试使用 ShapeRenderer 类绘制球员和球的边界。也许您忘记更新边界坐标以匹配球员或球的坐标?如何使用 ShapeRenderer 的示例:

shapeRenderer.begin(ShapeType.Line);
shapeRenderer.setColor(Color.CYAN);
shapeRenderer.rect(player.getBounds().x, player.getBounds().y, player.getBounds().width,
player.getBounds().getHeight());
shapeRenderer.end();

如果边界一切正常,请尝试将碰撞代码重写为更简单的代码:

if(ball.bounds.overlaps(anyPlayer.bounds)) {
if(up) {
up = false;
down = true;
System.out.println("Over Lap..");
}
else {
up = true;
down = false;
System.out.println("Over Lap..");
}
}

关于java - Overlap() 函数在 LIBGDX 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229789/

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