- Home /
Question by
RockenX · Jan 15, 2014 at 09:41 PM ·
webplayertouchscreenwindows 8internetexplorer
Delay on Mouse down touch.
I'm creating a web player that is usable on Internet Explorer on the Windows Surface Pro 2.
However I notice this problem: I've create 3D objects next to each other and they can be drag and dropped.
Their colliders are not touching each other but are very close to each other.
When I press down on the Touchscreen and move slowly it will drag the desired object I press my finger on.
However when I press down and quickly go to the right. It will grab the object to the right instead of the one I put my finger down on.
Here is what I did in the code for how this work. In a script on the Update function.
I detect a mouse down.
When this happen I do a raycast to the screen and the mouse position.
Am I doing this right? Is there something else I should be doing.
Thank you.
Comment
public class dragControls : $$anonymous$$onoBehaviour
{
public Camera m$$anonymous$$ainCamera;
private bool mIs$$anonymous$$ouseDown = false;
private SingleObject mSingleObjectSelected = null;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
switch (mIs$$anonymous$$ouseDown) {
//mouse is not down
case false:
if (Input.Get$$anonymous$$ouseButton (0)) {
mIs$$anonymous$$ouseDown = true;
//check to see if it's dragable
SingleObject currObject = GetSingleObjectFromRayCasting ();
if (currObject != null) {
currObject.$$anonymous$$ousePressedDown ();
}
mSingleObjectSelected = currObject;
}
break;
//mouse is down
case true:
if (Input.Get$$anonymous$$ouseButton (0) == false) {
if (mSingleObjectSelected != null) {
mSingleObjectSelected.$$anonymous$$ousePressedUp ();
mSingleObjectSelected = null;
}
mIs$$anonymous$$ouseDown = false;
}
break;
}
}
private SingleObject GetSingleObjectFromRayCasting ()
{
//mouse down then up.
Ray myray = m$$anonymous$$ainCamera.ScreenPointToRay (Input.mousePosition);
RaycastHit [] mAllHit = Physics.RaycastAll (myray);
for (int i = 0; i < mAllHit.Length; ++i) {
SingleObject currSingleObject = mAllHit [i].collider.GetComponent<SingleObject> ();
if (currSingleString != null) {
return currSingleObject;
}
}
return null;
}
}