Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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
2
Question by Arch · Jul 27, 2010 at 08:07 AM · inputmouse-drag

Right click drag and drop script

Hi guys,

Been working on this one most of the day. It seems relatively simple but it's been giving me a real headache.

Picking up and dropping objects is pretty easy, just use the OnMouseDown + OnMouseDrag. My problem occurs because I want to use the right mouse button, and Unity only has these special functions for the left button.

Here's the code I've got so far. It works, except to pick up the object you need to right-click on it, then left-click and drag to execute the OnMouseDrag function.

var screenSpace; var offset;

function Update() { if(Input.GetMouseButton(1)) { gameObject.GetComponent(Rigidbody).freezeRotation = true; screenSpace = Camera.main.WorldToScreenPoint(transform.position); offset = transform.position - Camera.main.ScreenToWorldPoint(Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z)); } else { gameObject.GetComponent(Rigidbody).freezeRotation = false; } }

function OnMouseDrag() { //if(Input.GetMouseButton(1)) { var curScreenSpace = Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z); var curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset; transform.position = curPosition; //} }

How exactly would I go about replacing the OnMouseDrag to that it can be executed with the right mouse button only?

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 spinaljack · Jul 27, 2010 at 09:54 AM 0
Share

What's stopping you from putting both parts of the script under update()?

1 Reply

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

Answer by sovalopivia · Jul 27, 2010 at 01:47 PM

You could look into using Event.MouseDrag() I don't believe that restricts which button is required to be pressed, just a button and mouse movement. However I'm not familiar with it's implementation.

http://unity3d.com/support/documentation/ScriptReference/EventType.MouseDrag.html

Or you could declare a variable for the Script like 'selected' or something and set it to true in the OnMouseOver() function, like so.

function OnMouseOver(){
    if(Input.GetMouseButtonDown(1)) {
        selected = true;
    }
}

Then within Update() you need to do two things, first check if the right button is still pressed, and second relocate the GameObject to your mouse position. You could set your variable back to false like this.

function Update() { if (Input.GetMouseButtonUp(1)) { selected = false; }

 if(selected) {
     DoYourStuff();
 } 

}

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

No one has followed this question yet.

Related Questions

how to detect horizantal and vertical drag on screen by mouse.? 1 Answer

Help In Making a SphereCast for 3D Tire! Working RayCast Script included! 0 Answers

Mouse drag horizontally and vertically is not working..? 0 Answers

Trying to trigger multiple objects by holding down the mouse with OnMouseDown 1 Answer

Translate object on y axis 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