Show / Hide GUI Button - Enable / Disable Script (Android)
Hello, I would like to create a button that appears when you press the screen , and it stays open until you press the button directly. The position of the button must be the same as the touch, I have tried to do something like this but I get an error (Index out of bounds) :
public GameObject Test;
void OnGUI()
{
TeleportClick script;
script = Test.GetComponent<TeleportClick>();
Touch touch;
touch = Input.GetTouch(0);
float x = touch.position.x;
float y = Screen.height - touch.position.y;
if (GUI.Button(new Rect(x, y, 300, 60), "Teleport"))
{
script.enabled = true;
}
}
}
After pressing the button , it must activate the script that once it is connected , run it (one time) and then turn it off. Finally hide the button.
This is the script that should be run only once after pressing the button (TeleportClick)
private Transform player;
void Awake()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update()
{
if (Input.touchCount == 1)
player.position = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
}
}
Thanks in advance.
You're almost there, Input.GetTouch(0) will try and return that touch from an internal array, if no touch exists it throughs Index out of bounds exceptions. Check your touches first.
void OnGUI()
{
if (Input.touchCount > 0)
{
TeleportClick script;
script = Test.GetComponent<TeleportClick>();
Touch touch;
touch = Input.GetTouch(0);
float x = touch.position.x;
float y = Screen.height - touch.position.y;
if (GUI.Button(new Rect(x, y, 300, 60), "Teleport"))
{
script.enabled = true;
}
}
}
}
Thank you so much! How can I let the button visible after finishing the touch phase?
Your answer
Follow this Question
Related Questions
Move 3d object using touch android 0 Answers
Touch position inacurrate 0 Answers
Touch.deltaPosition.magnitude in Unity Remote differs from Android build... why? 0 Answers
Android/Apple native plugin for touch input? 0 Answers
Android| Camera scrolling 1 Answer