- Home /
How To Get Current Mouse Position and have a GUI Box on right clicked
hey i was thinking about the mouse position
var e : Event = Event.current;
var xMousePosition = e.mousePosition.x;
var yMousePosition = e.mousePosition.y;
function OnGUI () {
if (Input.GetMouseButton(1))
GUI.Box (Rect (xMousePosition,yMousePosition,120,120), "");
}
i want when i right click it gets the current mouse position at which right clicked and show the GUI box there ..can any one help me
Anyone can help me to change this script in c#? I need help :(
Answer by aldonaletto · Aug 04, 2011 at 04:22 PM
You've almost got it:
function OnGUI () { if (Input.GetMouseButton(1)) GUI.Box (Rect (Input.mousePosition.x,Input.mousePosition.y,120,120), ""); }But the box will be open only while you're holding the right button down - and it will follow the mouse pointer if it moves. If you want the box to appear and remain openned, do the following:
var boxOpen: boolean = false; var boxPos: Vector3;
function Update () { if (Input.GetMouseButtonDown(1)){ boxPos.x = Input.mousePosition.x; // Y runs up to down in GUI, so let's invert it boxPos.y = Screen.height - Input.mousePosition.y; boxOpen = true; } }
function OnGUI () { if (boxOpen) GUI.Box (Rect (boxPos.x,boxPos.y,120,120), ""); } You must set boxOpen to false to close it.
EDITED: Y runs upside down in GUI system, so it must be inverted (0 is Screen.height)
var boxOpen: boolean = false;
var boxPos: Vector3;
function Update () {
if (Input.Get$$anonymous$$ouseButtonDown(1)){
boxPos = Input.mousePosition;
boxOpen = true;
}
}
function OnGUI () {
if (boxOpen)
GUI.Box (Rect (boxPos.x,boxPos.y,120,120), "");
}
this all i wanted but its open the gui at correct X position ..Y position is notcorect i mean it should open where i clicked the Xpos is correct
@Blitzerine, you're right! I forgot this: Y is inverted in the GUI system - 0 is at the top, while the bottom is Screen.height. I've edited my answer to correct this (only changed the line where boxPos was set to mousePosition)
Answer by Blitzerine · Aug 05, 2011 at 12:16 PM
and to close with Left click i made this for others ^^
var boxOpen: boolean = false;
var boxPos: Vector3;
function Update () {
if (Input.GetMouseButtonDown(1)){
boxPos.x = Input.mousePosition.x;
boxPos.y = Screen.height - Input.mousePosition.y;
boxOpen = true;
}
if (Input.GetMouseButtonDown(0)){
boxOpen = false;
}
}
function OnGUI () {
if (boxOpen)
GUI.Box (Rect (boxPos.x,boxPos.y,140,180), "");
}
Your answer
Follow this Question
Related Questions
Setting the mouse position to specific coordinates 5 Answers
How to set the mouse x and/or z position as a variable 1 Answer
Locking cursor without changing position 1 Answer
GUI.Button on MouseHover 1 Answer
Get Mouse Position GUI 3 Answers