- Home /
Input trick question
I currently have my character moving with WASD. I have a GUI setup that I want to mimic the WASD movement. I was wondering if it were possible to have a function say if GUI Button pushed, then act as if Input.GetKeyDown("x") = true.
I'd like to do this because it's an easier way to do what I want, plus I'd just like to know :)
Answer by DaveA · Jul 25, 2011 at 08:04 PM
I have an on-screen WASD control that lets you push the buttons as though they were keys. I don't know if it's the best way, but what I did was use GUI.RepeatButton's and modified the MouseLook and FPSWalker scripts to have a new var like 'doVert' and 'doHorz' to accept these as though they were Inputs. A fragment:
if (ml == null)
ml = Camera.main.GetComponent(MouseLook);
if (GUI.RepeatButton (Rect (Screen.width - left, Screen.height - top, 44, 44), laTexture))
if (ml)
ml.doHorz = -.10f;
Answer by ConfinedDarkness · Jul 25, 2011 at 08:03 PM
Have a Vector2 variable that is changed depending on input. Then make the position of your GUI element be that variable.
eg:
var guiPosition : Vector2;
function Update () {
guiPosition.x += Input.GetAxis("Horizontal"); guiPosition.y += Input.GetAxis("Vertical");
}
function OnGUI () {
GUI.Box(Rect(guiPosition.x, guiPosition.y, 100, 100), "I am a box!");
}
I have to admit that the question is not that clear at the start but near the end he quite clearly says he want to use a GUI.Button to emulate a key-down so he can move his char with the GUI-buttons. Your solution will move a gui element with WASD which is kinda the opposite :D
Oh! Sorry I miss-read. I thought he wanted to move the GUI. I guess his question has been answered by dave.
I was able to get my program working, but still don't have a direct answer to the question. I just didn't know if Unity supported a function that would say "Act like I just pushed 'a' ". So if I have WASD setup in code, ins$$anonymous$$d of adding the arrow keys to the code I could just write code that when pushing the arrow keys the game is taking it as input from WASD.
Answer by ConfinedDarkness · Jul 26, 2011 at 01:53 PM
You can have a function named "W" that when you press the W key, do that function. Then you can have a GUI button that if it is pressed, do that function.
yeah I know that. wanted to see if i could make a sort of hierarchy though so I don't have to do that. - push 'B' - Acts like you pushed 'A' - Pushing 'A' launches a function
ooo welll. Would be a neat little function, but there are definitely a million ways around it, like the answer above.
Your answer
Follow this Question
Related Questions
Paper, Rock, Scissor 3 Answers
TextField, Event.current, Input.GetKey, and GUI.FocusControl locking 1 Answer
Two near-identical scripts cause a cat to jump in different ways - why? 2 Answers
NGUI: Button don't detect input if parent change position on-screen? 1 Answer
Bind Controller GUI to Input 0 Answers