2人用のゲームを作っています。どちらにも、メーターを充電するために押すことができるボタンがあり、メーターを充電した時間に応じてボタンを放してアクションを実行できます。
2 つのプレーヤー ボタンとして左シフトと右シフトを使用しています。
問題は、両方が同時に充電されている場合、どちらかがボタンを離したときに、Input.GetButtonUp
0.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());
}
}