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 /
avatar image
1
Question by LordCalvert1977 · Sep 20, 2017 at 09:44 AM · c#uiguigameobjectrigidbody2d

How to drag objects from UI into scen

Hi guys!

I'm trying to make a 2D game where you drag different characters from a UI at bottom of the screen and drop it in the scene. I just can't get it to work. This is what I've thought I'll do:

I have a row of buttons. When I click one of them a game object spawns at the position of the pointer (over the button, creating the illusion that you drag the game object out of the button). Then that game object is transferred to a OnMouseDrag() function and drags as usual wherever you want it.

I can make an object spawn at the button (if I use a worldspace canvas as a child of the camera). But the last part how I get the newly created object to stick to the mouse is where I'm lost.

What do you think. Is this the right way to go about it or should I do something else?

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 rugvedkhandekar · Mar 21, 2018 at 06:42 PM 0
Share

Greetings! I have just started learning Unity. I want to do an exact same thing in my project. Can you please tell me in short what you did from the start?? I will appreciate your help and reply.

Thanks in Advance!

3 Replies

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

Answer by LordCalvert1977 · Sep 20, 2017 at 01:25 PM

Maybe with a RaycastHit2D on some DragNDropManager object? Checking if the mouse hits something while the mouse is pressed. If it already does, ignore every other object. If it doesn't, pick up the new object. Then it's only an Update() on one object.

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 LordCalvert1977 · Sep 20, 2017 at 04:01 PM 0
Share

Ok this is what I did:

  1. $$anonymous$$ake a world space canvas and put it as a child of the main camera.

  2. $$anonymous$$ake a button with a simple Instantiate script on it.

  3. $$anonymous$$ake an empty gameobject and put a script with this code in it.

    Transform target; public Camera cam; // Because Camera.main is a expensive way to go about it

      void Update()
         {
             //If the left mouse button is clicked.
             if (Input.Get$$anonymous$$ouseButton(0))
             {
                 //Get the mouse position on the screen and send a raycast into the game world from that position.
                 Vector2 worldPoint = cam.ScreenToWorldPoint(Input.mousePosition);
                 RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero);
     
                 //If something was hit, the RaycastHit2D.collider will not be null and the the object must have the "$$anonymous$$onkey" tag and target has to be null
                 if (hit.collider != null && hit.collider.tag == "$$anonymous$$onkey" && target == null)
                 {
                     target = hit.collider.transform; // Sets the target to be the transform that was hit
                 }
     
                 if (target != null)
                 {
                     target.position = worldPoint; // $$anonymous$$oves target with the mouse
                 }
             }
     
             if (Input.Get$$anonymous$$ouseButtonUp(0))
             {
                 target = null; // Sets the target to null again
             }
         }
    
    
  4. $$anonymous$$ake sure the objects you wanna drag has the right tag on them. In my case it's "$$anonymous$$onkey".

  5. Profit! No but I think that was all I did.

$$anonymous$$aybe there are a more efficient way to go about it but this works.

avatar image
0

Answer by tormentoarmagedoom · Sep 20, 2017 at 01:03 PM

Good day @LordCalvert1977 !

You need to use this 3 functions:

ScreenToWorldPoint, mousePosition, Instantiate

You need first to get a world corrds using Mouse position and ScreenToworldPoint function.

 Vector3 MousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

Once you have this, just need to Instantiate a GameObject at that position

 Instantiate(GameObject prefab, Vector3 position, Quaternion rotation);

If helped you, mark the answer as good!

Bye :D

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 LordCalvert1977 · Sep 20, 2017 at 01:20 PM 0
Share

Thanks for the reply but it's not addressing my problem. I can drag an object already. And I can instantiate it by pressing an UI button. What I can't do is get the newly instantiated object to stick to the mouse. Or I can, but it's buggy and drops it sometimes. Sorry if I was unclear.

I need to do something like this, I think:

I press the ui button which instantiates the gameobject. Then while the mouse button still is pressed I need to trick the instantiated go that it's being dragged by the mouse. That's the step I'm missing.

And if I put a If statment in an Update method, checking if the mousebutton is pressed every object with that script comes flying. And also I'm trying to avoid Update as much as posslible.

Any thoughts?

avatar image
0

Answer by rugvedkhandekar · Apr 10, 2018 at 07:51 PM

@LordCalvert1977 I partially understood what you did. Can you please explain me what do with the Empty game object with the Instantiate Script in it? And for instantiation, how does it take position of the mouse? Where did you put the script you have wrote above in your answer? what is 'cam' ? is 'cam' a variable? if yes, then which data type??

i'm trying to do a similar thing which you are trying to do, I would glad if you helped. Thanks in advance.

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

435 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

Related Questions

How to make a Interactive Computer Screen in Unity 5.5? 1 Answer

Make image follow your cursor 1 Answer

Revers Object Transfrom using an array problem in UI !! 0 Answers

[4.6] Dynamic Images in UI 1 Answer

Make GUILayout horizontal first, then vertical? (C#) 3 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