Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
This question was closed Oct 03, 2018 at 10:51 PM by SoshJam for the following reason:

The question is answered, right answer was accepted

avatar image
1
Question by SoshJam · Sep 18, 2018 at 01:40 PM · c#rigidbody2donmousedowninput.mouseposition

[STILL UNANSWERED] Lock object to mouse position & rotate it about mouse? [C#, 2D]

So I have a rigidbody2d on a component. I want it to move with the mouse like this: ![process][1] How would I do this?

Current Code:

 GameObject controller;
     public LayerMask hitLayers;
     Rigidbody2D rig;
 
     bool selected;
 
     private void Start()
     {
         controller = GameObject.Find("Controller");
         rig = GetComponent<Rigidbody2D>();
     }
 
     private void Update()
     {
         
             if (selected)
             {
                 Vector3 pos = Input.mousePosition;
                 pos.z = 10;
                 pos = Camera.main.ScreenToWorldPoint(pos);
                 Vector3 dist = pos - transform.position;
                 Vector3 newPos = pos - dist;
                 transform.position = newPos;
             }
         
     }
 
     private void OnMouseUp()
     {
         selected = false;
         rig.velocity = new Vector2(0, 0);
         rig.angularVelocity = 0;
     }
 
     private void OnMouseDown()
     {
         selected = true;
     }

But it doesn't move at all. When you click on it, it will stop falling and very slowly move down, and if its already landed, it won't do anything. [1]: /storage/temp/124733-how.png

how.png (22.4 kB)
Comment
Add comment · Show 1
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 Ellie97 · Oct 03, 2018 at 01:07 PM 0
Share

You could look into hinges. I've personally never experimented with them much, but when you pick up an object, attach a hinge point component to it (or whatever is required). I can't guarantee this will work but if I were to implement this I would start my research there

2 Replies

  • Sort: 
avatar image
1
Best Answer

Answer by Dankey_Kang · Oct 03, 2018 at 02:53 PM

You are going to want to do a simple raycast to pickup the object and use a TargetJoint2D component to have the object anchor based on your mouse position relative to the object and track your mouse position. This is a basic working version. I would look into more raycasting stuff as it is extremely useful to know how to do. Hope this helps!

Attach this script to your box with the rigidbody2D and its box collider.

 [RequireComponent(typeof(TargetJoint2D))]
 public class Dragable : MonoBehaviour 
 {
     private TargetJoint2D _joint;
 
     void Start () 
     {
         _joint = GetComponent<TargetJoint2D> ();
         if (_joint == null) {
             enabled = false;
         } else {
             _joint.enabled = false;
         }
     }
 
     public void BeginDrag(Vector2 mouse_pos)
     {
         Vector2 pos = (Vector2) transform.position;
         Vector2 scale = (Vector2)transform.localScale;
         Vector2 anchor = (mouse_pos - pos);
         if (scale.x == 0) {
             anchor.x = 0f;
         } else {
             anchor.x /= scale.x;
         }
         if (scale.y == 0) {
             anchor.y = 0f;
         } else {
             anchor.y /= scale.y;
         }
         _joint.enabled = true;
         _joint.anchor = anchor;
         UpdateDrag (mouse_pos);
     }
 
     public void UpdateDrag(Vector2 mouse_pos)
     {
         _joint.target = mouse_pos;
     }
 
     public void EndDrag()
     {
         _joint.enabled = false;
     }
 }

Attach this script to your camera, or just whatever object since it doesn't rely on the object it is attached to but make sure there is only one of them in the scene at a time.

 public class BoxDrag : MonoBehaviour 
 {
     private Dragable _drag_target;
 
     void Start()
     {
         _drag_target = null;
     }
 
     void Update () 
     {
         if (_drag_target == null) {
             if (Input.GetMouseButtonDown (0)) {
                 Vector2 mouse_pos = (Vector2)Camera.main.ScreenToWorldPoint (Input.mousePosition);
                 RaycastHit2D hit = Physics2D.Raycast (mouse_pos, Vector2.zero);
                 if (hit.collider != null) {
                     Dragable dragable = hit.collider.GetComponent<Dragable> ();
                     if (dragable != null) {
                         _drag_target = dragable;
                         _drag_target.BeginDrag (mouse_pos);
                     }
                 }
             }
         }
         if (_drag_target != null) {
             Vector2 mouse_pos = (Vector2)Camera.main.ScreenToWorldPoint (Input.mousePosition);
             _drag_target.UpdateDrag (mouse_pos);
             if (Input.GetMouseButtonUp (0)) {
                 _drag_target.EndDrag ();
                 _drag_target = null;
             }
         }
     }
 }
Comment
Add comment · Show 1 · 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 SoshJam · Oct 03, 2018 at 10:51 PM 0
Share

Thanks so much, this really helped!

avatar image
0

Answer by Shallow3 · Sep 18, 2018 at 02:03 PM

When pressing down the mouse shoot a raycast and see if the mouse is over the cube, if so have the cube follow the mouse until you release the mouse. you can mainly do this with simply if statements like: if(Input.GetButton("Fire1")) {

 } 

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 SoshJam · Sep 18, 2018 at 09:09 PM 0
Share

How do you raycast? I'm still learning Unity, (only made one crappy game that made less than a buck), and I have never had to use these before.

avatar image SoshJam · Sep 24, 2018 at 01:33 PM 0
Share

@Shallow3 I really need you to respond or delete your answer, because if people see that there is an answer then they don't respond any longer.

avatar image OtunGroup SoshJam · Sep 24, 2018 at 01:50 PM 1
Share

Hi, I am working on a solution for you. Watch this space! -Greg

avatar image SoshJam OtunGroup · Oct 02, 2018 at 12:33 PM 0
Share

Are you still working on it?

Follow this Question

Answers Answers and Comments

551 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Displaying the y value score,Displaying the score of the Y value 1 Answer

OnMouseDown (Collider other) Not working 1 Answer

Deteriorating force on object? 0 Answers


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