0

true のときにプレイヤーが Button-Tile を踏むと、false になります。false のときにボタンタイルを踏むと true になります。

問題は、プレーヤーがボタン タイルの上に立つ (交差する) ときに、状態が更新され続けることです。つまり、true から false になります。false とプレイヤーが交差するため、再び true になります。真-偽-真-偽など。

ElapsedGameTime を使用して更新プロセスを遅くし、プレイヤーが Button を true または false に変更できるようにします。

しかし、それは私が探していた解決策ではありません。プレーヤーがボタン タイルに立っている間、False/True 状態を維持する他の方法はありますか?

4

2 に答える 2

5

ボタンのbool isPressedデフォルトをfalseにします。

次に、プレイヤーがタイルに入るときに、エンターイベントが何であるかをチェックします&& !isPressed

あなたが探しているのは、あなたの状態で2つのことを組み合わせるだけです。プレーヤーがボタンを踏むと、ボタンはまだトリガーされていません。これを達成するために、時間的に何も遅くする必要はありません。次に、チェック内容に応じて、プレーヤーがタイルを離れるとき、またはタイルから離れたときに、isPressedをもう一度falseに設定します。

于 2012-12-01T02:50:49.863 に答える
0

解決策があります。まず、パラメーターを作成します。

MouseState nowMouseState, lastMouseState;

LoadContent() で:

lastMouseState = Mouse.GetState();

1 つの関数を作成します。

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 に答える