- Home /
Question by
Repeperilka · Feb 19, 2018 at 08:43 AM ·
inputkeys
I'm trying to make a 2D fight game, and it only recognize 2 inputs at the same time
Hello there. As the title said, for some reason the script I've created only recognize the first 2 of the 3 inputs I make at the same time. I'm not very good at programing, that means I have no idea if the problem comes from unity or from the script so, I'll attach it here:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputFixer : MonoBehaviour {
[SerializeField]
public List <ControllerInput> PlayerButtons = new List<ControllerInput> ();
[SerializeField]
public List <ControllerInput> PlayerDirectionButtons = new List<ControllerInput> ();
[SerializeField]
public List <ListInput> InputList = new List<ListInput> ();
public float inputTime;
// Use this for initialization
void Start () {
}
void FixedUpdate (){
foreach (ControllerInput input in PlayerButtons) {
if (Input.GetKeyDown (input.button)) {
if (InputList.Count != 0) {
InputList.Add (new ListInput (input.input, inputTime));
} else {
InputList.Add (new ListInput (input.input, inputTime));
}
}
}
if (Input.GetKeyDown (PlayerDirectionButtons [0].button) || Input.GetKeyDown (PlayerDirectionButtons [1].button) || Input.GetKeyDown (PlayerDirectionButtons [2].button) || Input.GetKeyDown (PlayerDirectionButtons [3].button) ||
Input.GetKeyUp (PlayerDirectionButtons [0].button) || Input.GetKeyUp (PlayerDirectionButtons [1].button) || Input.GetKeyUp (PlayerDirectionButtons [2].button) || Input.GetKeyUp (PlayerDirectionButtons [3].button)) {
#region DPad
if (Input.GetKey (PlayerDirectionButtons [0].button) && !Input.GetKey (PlayerDirectionButtons [3].button) && !Input.GetKey (PlayerDirectionButtons [1].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.Up) {
InputList.Add (new ListInput (InputNames.Up, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.Up, inputTime));
}
} else if (Input.GetKey (PlayerDirectionButtons [1].button) && !Input.GetKey (PlayerDirectionButtons [0].button) && !Input.GetKey (PlayerDirectionButtons [2].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.Right) {
InputList.Add (new ListInput (InputNames.Right, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.Right, inputTime));
}
} else if (Input.GetKey (PlayerDirectionButtons [2].button) && !Input.GetKey (PlayerDirectionButtons [1].button) && !Input.GetKey (PlayerDirectionButtons [3].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.Down) {
InputList.Add (new ListInput (InputNames.Down, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.Down, inputTime));
}
} else if (Input.GetKey (PlayerDirectionButtons [3].button) && !Input.GetKey (PlayerDirectionButtons [2].button) && !Input.GetKey (PlayerDirectionButtons [0].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.Left) {
InputList.Add (new ListInput (InputNames.Left, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.Left, inputTime));
}
} else if (Input.GetKey (PlayerDirectionButtons [1].button) && Input.GetKey (PlayerDirectionButtons [2].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.DwnRgt) {
InputList.Add (new ListInput (InputNames.DwnRgt, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.DwnRgt, inputTime));
}
} else if (Input.GetKey (PlayerDirectionButtons [2].button) && Input.GetKey (PlayerDirectionButtons [3].button)) {
if (InputList.Count != 0) {
//if (InputList [InputList.Count - 1].name != InputNames.DwnLft) {
InputList.Add (new ListInput (InputNames.DwnLft, inputTime));
//}
} else {
InputList.Add (new ListInput (InputNames.DwnLft, inputTime));
}
}
#endregion
}
}
// Update is called once per frame
void Update () {
for (int i = 0; i < InputList.Count; i++) {
InputList [i].timeToGo -= Time.deltaTime;
if (InputList [i].timeToGo <= 0) {
InputList.RemoveAt (i);
i--;
}
}
}
}
[System.Serializable]
public class ListInput {
public InputNames name;
public float timeToGo;
public ListInput (InputNames _name, float _time){
name = _name;
timeToGo = _time;
}
}
[System.Serializable]
public class ControllerInput {
public string name;
public InputNames input;
public KeyCode button;
public ControllerInput (string _name, InputNames _input, KeyCode _active){
name = _name;
input = _input;
button = _active;
}
}
public enum InputNames{
Up,
Down,
Left,
Right,
DwnRgt,
DwnLft,
X,
Triangle,
Circle,
Square,
R1,
R2,
R3,
L1,
L2,
L3,
Start,
Select,
}
Thank you.
Comment