2つのキーを押してから3番目のキーを押すと、すべて解放されずに、Input.GetKeyDownは3番目のキーが押されたことを認識しません。入力には2つの値しか格納されませんか?
public class Keys
{
internal bool leftPressed = false;
internal bool rightPressed = false;
internal bool upPressed = false;
internal bool downPressed = false;
}
public Keys keys = new Keys();
void Start() {
}
void Update()
{
updateButton(KeyCode.LeftArrow);
updateButton(KeyCode.RightArrow);
updateButton(KeyCode.UpArrow);
updateButton(KeyCode.DownArrow);
}
void updateButton(KeyCode key)
{
if (Input.GetKeyDown(key))
{
if (key == KeyCode.LeftArrow)
keys.leftPressed = true;
if (key == KeyCode.RightArrow)
keys.rightPressed = true;
if (key == KeyCode.UpArrow)
keys.upPressed = true;
if (key == KeyCode.DownArrow)
keys.downPressed = true;
}
else if (Input.GetKeyUp(key))
{
if (key == KeyCode.LeftArrow)
keys.leftPressed = false;
if (key == KeyCode.RightArrow)
keys.rightPressed = false;
if (key == KeyCode.UpArrow)
keys.upPressed = false;
if (key == KeyCode.DownArrow)
keys.downPressed = false;
}
}
は私がやってみたかったすべてのキーが押されたときにプレイヤーのクラスは、ゲームオブジェクトを移動していました:
は、ここに私のコードです。両方向が押された場合は、互いに打ち消し合い、プレイヤーのベロシティを0に設定します。
同時に左右に叩きますが、上下を押しても上下の値は変わりませんその時点で。 Input.GetKeyDownには2つの値しか含まれておらず、キーボードの全キーの状態ではないようです。
注:キーボードの2つのランダムキーを押しても、値の変更が左、下、上または右で停止します。
誰かが自分のコードに提案や修正をしている人はいますか? おかげで、
私はこのコードが最適化されていないことを知っています。私は楽しく最適化するための小さなプロジェクトとしてこれをやっています。 – Alox