我想这样做,以便当我当前班级的正方形与redSquare相邻时(右侧)时,我可以按SPACE连接两个正方形,这个正方形将跟随红色正方形而不断下一个它。 然后再次按SPACE将"断开"两个正方形,意味着这个正方形不再沿着redSquare。 但是,由于SPACE也用于将方块连接在一起,我认为代码只是不断重复,因此方块永远不会连接。
如何使用SPACE连接和断开连接?
Boolean isConnected = false;
public void update() {
if (position.x - redSquare.position.x == 40 && position.y == redSquare.position.y) {
if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
isConnected = true;
}
}
if (isConnected) {
position.x = redSquare.position.x + 40;
position.y = redSquare.position.y;
if(Gdx.input.isKeyJustPressed(Input.Keys.SPACE)){
isConnected = false;
}
}
}
此外,作为附注,您是否建议您了解这些类型的"逻辑"问题
答案 0 :(得分:1)
我会试试这个:
public void update() {
if (Gdx.input.isKeyJustPressed(Input.Keys.SPACE)) {
if (isConnected) {
isConnected = false;
}
else if (isConnectable(redSquare.position)) {
isConnected = true;
}
}
if (isConnected) {
position.x = redSquare.position.x + 40;
position.y = redSquare.position.y;
}
}
private boolean isConnectable(Vector2 pos) {
if (position.x - pos.x == 40 && position.y == pos.y)
return true;
return false;
}
如果位置是“可连接的”,则无需检查每个周期,只需在按下SPACE时执行此操作。您的代码中的问题是您在一个周期中连接和断开连接,因为最终连接位置也是“可连接”位置