0

如果玩家在它为真时踩到一个Button-Tile,它就会变为假。如果玩家踩到一个 Button-Tile 时它是假的,它就会变成真的。

问题是,当玩家站在(相交)Button-Tile 时,它​​会不断更新条件。所以,从真,变成假。因为它是假的,玩家与之相交,它又变成了真的。真假真假等等。

我使用 ElapsedGameTime 使更新过程变慢,玩家可以有机会将 Button 更改为 true 或 false。

但是,这不是我正在寻找的解决方案。当玩家站在按钮图块上时,是否有任何其他方法可以使其保持 False/True 状态?

4

2 回答 2

5

使按钮具有bool isPressed默认为 false 的 a。

然后当玩家进入瓷砖时,检查进入事件是什么&& !isPressed

您所要做的就是在您的条件下结合两件事,玩家踩到按钮并且按钮尚未触发 - 您不必在时间上放慢任何速度来完成此操作。然后当玩家离开瓷砖或不再在瓷砖上时,这取决于您的检查是什么,只需再次将 isPressed 设置为 false。

于 2012-12-01T02:50:49.863 回答
0

我有你的解决方案。首先,你创建参数:

MouseState nowMouseState, lastMouseState;

在加载内容()中:

lastMouseState = Mouse.GetState();

创建一个函数:

public void ChangeState()//I check button have position:Vector2(0,0) and hight= width=100

{

 nowMouseState= Mouse.GetState();//click

 if (Mouse.GetState().X>0&&Mouse.GetState().X<100
&&Mouse.GetState().Y>0&&Mouse.GetState().Y<100
&&nowMouseState.LeftButton==ButtonState.Pressed
&&lastMouseState.LeftButton==ButtonState.Released)

{

                if (Button_Tile)
                    Button_Tile=false;
                else
                    Button_Tile= true;

                lastMouseState = nowMouseState;//click
            }
            if (Mouse.GetState().LeftButton==ButtonState.Released)
            {
                lastMouseState = Mouse.GetState();
            }
}

然后您可以将 ChangeState() 放入 Update() 中。

于 2012-12-02T19:54:56.960 回答