0

2人用のゲームを作っています。どちらにも、メーターを充電するために押すことができるボタンがあり、メーターを充電した時間に応じてボタンを放してアクションを実行できます。

2 つのプレーヤー ボタンとして左シフトと右シフトを使用しています。

問題は、両方が同時に充電されている場合、どちらかがボタンを離したときに、Input.GetButtonUp0.5 秒後までイベントが発生しないことです。1 人のプレーヤーのみが充電している場合、イベントはプレーヤーがリリースされるとすぐにトリガーされます。

それを解決する理由と方法はありますか?2台の異なるPCで発生しました。

編集:いくつかのコード

using UnityEngine;
using System.Collections;

public class ObjectScript : MonoBehaviour {
    void Update () {            
        for (int i = 0; i < 2; i++) {
            if (isButtonDown(i))        // button first pressed
                buttonDown(i);
            if (isButtonUp(i))          // button released
                buttonUp(i);
            if (isButtonPressed(i))     // while button held pressed
                buttonIsPressed(i);
        }
    }

    // checks whether button has just been pressed down for given player
    private bool isButtonDown(int player) {
        return Input.GetButtonDown(getPlayerKeyName(player));
    }

    // checks whether button is held pressed down for given player
    private bool isButtonPressed(int player) {
        return Input.GetButton(getPlayerKeyName(player));
    }

    // checks whether has just been released for given player
    private bool isButtonUp(int player) {
        return Input.GetButtonUp(getPlayerKeyName(player));
    }

    // get the name of the key per player
    private string getPlayerKeyName(int player) {
        return "Player" + (player+1).ToString() + "Key";
    }

    // when button is first pressed
    private void buttonDown(int player) {
        Debug.Log("Button pressed: " + player.ToString());
    }


    // while button is pressed
    private void buttonIsPressed(int player) {
    }

    // when button is first released
    private void buttonUp(int player) {
        Debug.Log("Button released: " + player.ToString());
    }
}
4

0 に答える 0