- Home /
How Can I Move an Object in the Editor by MousePosition?
This is a tough one.
I'm trying to take the current selection (a game object), hover the mouse over a point in space in the scene view, hit a key combination (CTRL+T for example), and then the object would move to that point in world space. Obviously the point has to be the normal of a physics collider for ray casting.
First, camera.current frequently returns null, so I used the undocumented camera property called SceneView.lastActiveSceneView.camera. This always returns the scene camera.
Now this second part, the ray cast, varies depending on where the script lies.
Ray ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(Event.current.mousePosition);
event.current.mouseposition always returns NULL if this script is called from the EditorWindow. Putting this script on an individual game object doesn't seem right to me as it's a tool. It returns a value is its called from the Inspector, however. If I click on the sceneview and hit the key combination, the script is not called. I have to click on the inspector first, then the key combination, for the script to be called. Here is the code:
public override void OnInspectorGUI()
{
if(Event.current.Equals(Event.KeyboardEvent("^t")))
{
Debug.Log("Started..");
Ray ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(Event.current.mousePosition);
Debug.Log(ray);
RaycastHit rayhit;
if(Physics.Raycast(ray.origin,ray.direction,out rayhit))
{
Debug.Log("Hit!");
}
}
}
This casts a ray for sure, but it's definitely not relative to the world. It's something else. If I do a Debug.DrawRay(), the ray that is drawn is almost perpedicular to the scene camera. Similar results are acheived if I do ScreenPointtoRay(). So I assume this is not the way to go either.
Ultimately it seems I need to have mouse focus on the scene view and be able to run the script with that focus. I simply don't know how so nothing is working. Any ideas or corrections?
Thanks!
Your answer
Follow this Question
Related Questions
What are the editor resources by name for EditorGUIUtility.Load Method? 6 Answers
Unable to find java in the system path 3 Answers
Raycasting in Unity Editor 3 Answers
Unchanged project features break on bootup? (possible editor issue, v2018.1.1f) 0 Answers
Exposing UnityEditor members via Reflection. Is it legal? 0 Answers