- Home /
OnMouseButtonDown raycast
I'm currently working on a mobile game project on Unity. I have a problem while trying to get collided item and working mechanic of Ray. Here is the code:
void Update () {
int boxNumber = -1;
//Change with touch inputs
if(Input.GetMouseButtonDown(0)){
mouseDownX = Input.mousePosition.x;
mouseDownY = Input.mousePosition.y;
xMove = true;
RaycastHit hit = new RaycastHit ();
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, 100)) {
boxNumber = int.Parse (hit.collider.gameObject.name);
}
}
if(Input.GetMouseButtonUp(0)){
mouseUpX = Input.mousePosition.x;
mouseUpY = Input.mousePosition.y;
yMove = true;
}
if(yMove == true && boxNumber != -1){
boxDecider (boxNumber,getDirection());
Debug.Log (getDirection());
yMove = false;
xMove = false;
}
}
getDirection() boxDecider()
methods are created by me and are working well. When first if
statement is activated(when mouse button down) it finds the collided object correctly but it calls the boxDecider()
method WITHOUT releasing the mouse button but it should call the method after releasing the mouse button.
Answer by aditya · Apr 22, 2016 at 05:07 AM
i m dead sure that yMove is already true before you are setting it in GetMouseButtonUp
, let me know if this code worked for you
void Update () {
int boxNumber = -1;
//Change with touch inputs
if(Input.GetMouseButtonDown(0)){
mouseDownX = Input.mousePosition.x;
mouseDownY = Input.mousePosition.y;
xMove = true;
RaycastHit hit = new RaycastHit ();
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, out hit, 100)) {
boxNumber = int.Parse (hit.collider.gameObject.name);
}
}
if(Input.GetMouseButtonUp(0)){
mouseUpX = Input.mousePosition.x;
mouseUpY = Input.mousePosition.y;
yMove = true;
if(boxNumber != -1){
boxDecider (boxNumber,getDirection());
Debug.Log (getDirection());
yMove = false;
xMove = false;
}
}
}
Answer by Ankush186 · Apr 23, 2016 at 10:51 AM
You Can Use Timer to Wait in Your 3rd If Statement or You can OnMouseUp() and OnMouseDown() Methods.
Your answer
Follow this Question
Related Questions
Raycast examples needed - alternative to OnMouseDown, OnMouseUp 1 Answer
OnMouseDown for Right Mouse 2 Answers
Question about raycasts and OnMouse functions 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers