如果玩家在真实时按下Button-Tile,则会变为false。如果玩家在假按钮时踩下按钮图块,则表示该图形为真。
问题是,当玩家站在(相交)Button-Tile时,它会不断更新条件。所以,从真实来看,它变得虚假。因为它的错误和玩家相交,它再次成为现实。真假 - 真假 - 等等。
我使用ElapsedGameTime使更新过程变慢,玩家有机会将Button更改为true或false。
但是,这不是我想要的解决方案。当玩家站在按钮区块上时,还有其他方法可以使其保持在False / True状态吗?
答案 0 :(得分:5)
使按钮的bool isPressed
默认为false。
然后当玩家进入牌时,检查输入事件是&& !isPressed
你所要做的就是在你的情况下结合两件事情,玩家踩在按钮上并且按钮还没有被触发 - 你不必为了实现这个目的而减慢任何时间。然后当玩家离开瓷砖或不再在瓷砖上时,取决于你的支票是什么,只需将isPressed再次设置为假。
答案 1 :(得分: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()中。