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
0
Question by Jack-Mariani · Dec 21, 2017 at 11:11 AM · c#draguser interfacedragging

Start dragging an UI Image and then keep dragging a 2d collider

Hey everyone. This is what I want to achieve:

GOAL

  1. Player start dragging an image from the UI (a BUILDING UI in the shop)

  2. As soon as player exits from the UI I close the UI and I would like to spawn a new gameobject with a 2d collider on it (I'm calling I'll call this a BUILDING GAMEOBJECT)

  3. After the spawn I would like to keep dragging the BUILDING GAMEOBJECT

I want to use the IDragHandler interface and both the dragging are working.

WHAT I CAN DO

  • I can drag the BUILDING UI on the UI and I can drag the BUILDING GAMEOBJECT on the gameboard using IDragHandler interface .

  • At the moment I'm also able to spawn the BUILDING GAMEOBJECT right in the place as soon as player exit from the UI.

WHAT I AM MISSING

When player exit from the UI the BUILDING GAMEOBJECT will be placed in the right place. But player will need to click on it again to start dragging it.

So at the moment player needs to do one other step

  1. player clicks on BUILDING UI and start draggin

  2. As soon as player exit from the UI I close the UI and I spawn the BUILDING GAMEOBJECT under mouse pointer

  3. NON DESIRED Player needs to click on BUILDING GAMEOBJECT to start dragging it

  4. Player can drag the BUILDING GAMEOBJECT on the board

QUESTION

Is there any way to keep dragging the BUILDING GAMEOBJECTand remove STEP 3 using IDragHandler interface ?

BUILDING UI CODE

  public class ShopBuildingUI : MonoBehaviour, IDragHandler
     {
         //this event is used to check if player has moved the item around
         public void OnDrag(PointerEventData eventData)
         {
             //if we're still on the ui we just move the image
             MoveImage(eventData);
         }
 
         //moving the image around
         private void MoveImage(PointerEventData eventData)
         {
             //move the image
             _itemImage.SetPosition(eventData.delta);
             //check if we're moving out of the ui
             if (eventData.pointerCurrentRaycast.gameObject.tag == "UserInterface") return;
             //pass the control to the building gameobject
             MovedOnGameboard(Camera.main.ScreenToWorldPoint(Input.mousePosition));
         }
 
         //this happens if the building has been moved on the gameboard
         private void MovedOnGameboard(Vector3 worldPosition)
         {
             //DISABLE THIS UI ELEMENT
             ...
 
             //spawn a new building on the spot
             _building.SpawnView(worldPosition);
         }


BUILDING GAMEOBJECT CODE

     public class Building : MonoBehaviour, IDragHandler
     {
         //dragging move the item in the world
         public void OnDrag(PointerEventData eventData)
         { transform.position = eventData.pointerCurrentRaycast.worldPosition; }
     }
Comment
Add comment · Show 9
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 NorthStar79 · Dec 21, 2017 at 02:57 PM 0
Share

probably you are using On$$anonymous$$ouseDrag() or OnPointerDown() or similar events for start dragging this Building Object, all you need to do in cut all code inside them and paste them to another method. than in your UIBuildingDrag script, you should fire an event right after you instantiated buildingObject for calling that drag method.

I suggest you to check this also you can look C# events too.

if you need further assistance or if have a hard time to understand this answer, just comment below.

I hope this answer helps, please inform us your results.

avatar image Jack-Mariani NorthStar79 · Dec 21, 2017 at 03:48 PM 0
Share

I added my code above. I'm not using any starting method. I just get the OnDrag handler of iDragHandler on both elements.

I can't trigger it one time with a UnityEvent. I would need it to keep triggering until player doesn't stop dragging.

I could move everything out of the OnDrag and just keep dragging until I get a basic Input.Get$$anonymous$$ouseUp or something like that. But I'd like to know if I can keep using the OnDrag handler.

Edit: just a further note. The BUILDING GA$$anonymous$$EOBJECT catches the OnDrag with a 2d collider and a 2dPhysicsRaycaster on the main camera.

avatar image NorthStar79 Jack-Mariani · Dec 22, 2017 at 05:55 AM 0
Share

I did not test it but something like this also could help too :

      bool isJustSpawned =true;
      RaycastHit hit;
 
          private void Start() {
              $$anonymous$$oveBuildingObject();
          }
          public void OnDrag(PointerEventData eventData)
         {
             isJustSpawned = false;
             $$anonymous$$oveBuildingObject();
         }
 
         private void Update() {
             if(!isJustSpawned) return;
 
             $$anonymous$$oveBuildingObject();
         }
 
          public void $$anonymous$$oveBuildingObject()
          {
              if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,$$anonymous$$athf.Infinity))
              {
                  transform.position = hit.point;
              }
              
          }
Show more comments

0 Replies

· Add your reply
  • Sort: 

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

421 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

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

What's the difference between MonoBehavior OnMouseDrag and IDragHandler OnDrag 1 Answer

RawImage - Cannot update material's UV offset. 1 Answer

Unity2D : How can i change animation by dragging finger left or right on screen? 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