- Home /
Refactor code from getting input from keyboard to get input from UI Buttons
I have created a working prototype of my game with input from 4 different keys (A,K,Z,M) on the keyboard but now I want to refactor the code to work with the 4 ui buttons for android. For example, I want to replace Input.GetKey(KeyCode.A) with the Top Left ui button. One other case is that in some instances a set of instructions would carry out if two buttons are pressed at the same time for example:
if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.K))
{
FatherGameObject.transform.Translate(0, 0.5f * Time.deltaTime, 0, Space.World);
}
Full Code:
if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.K))
{
FatherGameObject.transform.Translate(0, 0.5f * Time.deltaTime, 0, Space.World);
}
else if (Input.GetKey(KeyCode.A) && (RightPivot.transform.rotation.z > -0.10f))
{
...
}
else if (Input.GetKey(KeyCode.K) && (LeftPivotGameObject.transform.rotation.z < 0.10f))
{
...
}
if (Input.GetKey(KeyCode.Z) && Input.GetKey(KeyCode.M))
{
FatherGameObject.transform.Translate(0, -0.5f * Time.deltaTime, 0, Space.World);
}
else if (Input.GetKey(KeyCode.M) && (LeftPivotGameObject.transform.rotation.z > -0.10f))
{
...
}
else if (Input.GetKey(KeyCode.Z) && (RightPivot.transform.rotation.z < 0.10f))
{
...
}
Comment
Best Answer
Answer by playspare · Oct 25, 2018 at 09:11 AM
Found the answer myself. Solution to this is creating two event triggers on each button; one PointerDown and one PointerUp.
public bool upLeftBool;
public bool upRightBool;
void FixedUpdate () {
if (upLeftBool && upRightBool)
{
FatherGameObject.transform.Translate(0, 0.5f * Time.deltaTime, 0, Space.World);
}
}
public void onPointerDownUpLeft()
{
upLeftBool = true;
}
public void onPointerUpUpLeft()
{
upLeftBool = false;
}
public void onPointerDownUpRight()
{
upRightBool = true;
}
public void onPointerUpUpRight()
{
upRightBool = false;
}