Xna 如何创建类似按钮/开关的平铺,您可以在其中踩下它并更改其值?
如果玩家踩到按钮磁贴,当其为真时,它将变为假。如果玩家踩到按钮磁贴,当它为false时,它将变为true 问题是,当玩家站在按钮块上(与按钮块相交)时,它会不断更新条件。所以,从真到假。因为它是假的,玩家将它交叉,它又变成了真的。真假真假等等 我使用ElapsedGameTime使更新过程变慢,玩家可以有机会将按钮更改为true或falseXna 如何创建类似按钮/开关的平铺,您可以在其中踩下它并更改其值?,xna,xna-4.0,Xna,Xna 4.0,如果玩家踩到按钮磁贴,当其为真时,它将变为假。如果玩家踩到按钮磁贴,当它为false时,它将变为true 问题是,当玩家站在按钮块上(与按钮块相交)时,它会不断更新条件。所以,从真到假。因为它是假的,玩家将它交叉,它又变成了真的。真假真假等等 我使用ElapsedGameTime使更新过程变慢,玩家可以有机会将按钮更改为true或false 然而,这并不是我想要的解决方案。当玩家站在按钮磁贴上时,是否有其他方法使其保持假/真状态?使按钮有一个默认为假的布尔值 然后,当玩家输入互动程序时,检查输入
然而,这并不是我想要的解决方案。当玩家站在按钮磁贴上时,是否有其他方法使其保持假/真状态?使按钮有一个默认为假的
布尔值
然后,当玩家输入互动程序时,检查输入事件是什么!isPressed
你所要做的就是在你的情况下结合两件事,玩家踩下按钮,而按钮还没有被触发-你不必在时间上放慢速度来完成这一点。然后,当播放器离开磁贴或不再在磁贴上时,根据您的检查内容,只需再次将isPressed设置为false。使按钮具有一个默认为false的
bool isPressed
然后,当玩家输入互动程序时,检查输入事件是什么!isPressed
你所要做的就是在你的情况下结合两件事,玩家踩下按钮,而按钮还没有被触发-你不必在时间上放慢速度来完成这一点。然后,当播放机离开磁贴或不再在磁贴上时(取决于您的检查内容),只需再次将isPressed设置为false。我为您提供了解决方案。首先,创建参数:
MouseState nowMouseState, lastMouseState;
在LoadContent()中:
创建一个函数:
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();
}
}
public void ChangeState()//我检查按钮的位置:Vector2(0,0)和hight=width=100
{
nowMouseState=Mouse.GetState();//单击
如果(Mouse.GetState().X>0&&Mouse.GetState().X0&&Mouse.GetState().Y我为您提供了解决方案。首先,创建参数:
MouseState nowMouseState, lastMouseState;
在LoadContent()中:
创建一个函数:
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();
}
}
public void ChangeState()//我检查按钮的位置:Vector2(0,0)和hight=width=100
{
nowMouseState=Mouse.GetState();//单击
如果(Mouse.GetState().X>0&&Mouse.GetState().X0&&Mouse.GetState().Y