Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
11 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
3
Question by mrnuke · Jul 28, 2015 at 12:40 PM · mouse cursor

Mouse cursor position relative to the object

I can not figure out the way to calculate how the mouse cursor corresponds with the object center in 2D sceen plane. To be more clear, I need to calculate if the cursor is more to the left or to the right relatively to the center of the object.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
3
Best Answer

Answer by Positive7 · Jul 28, 2015 at 03:31 PM

 using UnityEngine;
 
 public class test3 : MonoBehaviour
 {
     void Update(){
 
         Vector2 mouse = new Vector2(Input.mousePosition.x,Input.mousePosition.y);
         Ray ray;
         ray = Camera.main.ScreenPointToRay(mouse);
         RaycastHit hit;
         
         if(Physics.Raycast(ray,out hit, 10))
         {
             if(hit.point.x < transform.position.x)
                 Debug.Log("Left");
             else
                 Debug.Log("Right");
         }
     }
 }
Comment
Add comment · Show 4 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image mrnuke · Jul 29, 2015 at 02:17 PM 0
Share

That worked! Thanks a lot!

avatar image TharosTheDragon · Oct 08, 2017 at 03:35 AM 0
Share

What if it's on a UI canvas?

avatar image Positive7 TharosTheDragon · Oct 08, 2017 at 03:51 PM 0
Share

Something like this should work on UI :

  private void Update()
     {
         var pointer = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
         var raycastResults = new List<RaycastResult>();
         EventSystem.current.RaycastAll(pointer, raycastResults);
 
         if (raycastResults.Count > 0)
         {
             foreach (var raycastResult in raycastResults)
             {
                 if (EventSystem.current.IsPointerOverGameObject() && raycastResult.gameObject.name == "Button")
                 {
                     Debug.Log(Input.mousePosition.x < raycastResult.gameObject.transform.position.x ? raycastResult.gameObject.name + " Left" : raycastResult.gameObject.name + " Right");
                 }
             }
         }
     }

$$anonymous$$aybe there is a more efficient way tho.

avatar image TharosTheDragon Positive7 · Oct 08, 2017 at 04:14 PM 0
Share

Good idea, but it turns out RectTransformUtility is the way to go.

avatar image
1

Answer by lightgem12 · Oct 18, 2015 at 09:13 AM

Well, this is what I did to find the distance between them for x and y:


     public Camera camera;
 public Transform obj;

 Vector2 objPos;
 Vector2 mousePos;
 float mousePosY, mousePosX;
  
 void Update () 
 {
     objPos = obj.transform.position;//gets player position
     mousePos = Input.mousePosition;//gets mouse postion
     mousePos = camera.ScreenToWorldPoint (mousePos);
     mousePosX = mousePos.x - objPos.x;//gets the distance between object and mouse position for x
     mousePosY = mousePos.y - objPos.y;//gets the distance between object and mouse position for y  if you want this.

     
 }


you wont need the y for this situation, but I thought I might as well show that too. I'm not going to tell you how to implement it into an if statement, I'm sure you can handle it. Hope this helps, and works.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Mouse Focus and Gui.Window 0 Answers

How to get mouse cursor in Vector3 1 Answer

Custom Cursor is hidden by UI 2 Answers

Firing at mouse position, 2d game 2 Answers

Can't See Mouse Cursor In Game. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges