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 priit1989 · Sep 28, 2018 at 12:12 AM · c#movement scriptthrowdrag objectsdragrigidbody

OnMouseOver() right click cursor - not triggering the code

Hello.

I am trying to make a simple physics game and throw some gameObjects. I want to pick up a box with mouse cursor and throw it. I googled, and found a piece of code which works technically, but only with OnMouseDown() it is left click. But I want right click :D!

Problem with the script: It is not registering right click at all, I probably messed up. I'm just a beginner (3th day).

This is what I have for now:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class DragObj : MonoBehaviour
 {
     private Vector3 screenPoint;
     private Vector3 offset;
 
 
     void OnMouseOver()
     {
         if (Input.GetMouseButtonDown(1))
         {
             screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
             offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
         }
     }
 
     void OnMouseDrag()
     {
         if (Input.GetMouseButtonDown(1))
         {
             Vector3 cursorPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
             Vector3 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset;
             transform.position = cursorPosition;
         }
     }
 }




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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by KittenSnipes · Sep 28, 2018 at 03:16 AM

@priit1989 I have created a decent example script for you to further expand and it has comments to explain what is going on. So I hope it helps.

     [Header("Needed to get the mouse position of the player")]
     public Camera cam;
 
     [Header("How far a player can hit an object from")]
     public float reachOfPlayer = 15;
 
     [Header("Player's throw force of objects | PS: THE OBJECT BEING THROWN MUST HAVE RIGIDBODY COMPONENT TO WORK")]
     public float throwForce = 15;
 
     [Header("This will display our currently selected object")]
     public GameObject selectedObject = null;
 
     [Header("Offset of x, y, and z from the player")]
     public Vector3 offset = new Vector3(1, 1, 1);
 
     [Header("Speed our selected object moves towards our grabbed position")]
     public float speed = 30;
 
     //Variables:
     private bool clicked = false;
     private bool holding = false;
 
     private Transform selectedObjectsParent;
 
     private void Update()
     {
         //If left clicked
         if (Input.GetMouseButtonDown(1))
         {
             //Perform our click function
             ClickedOnObject();
 
             //If we are holding the object and it is not null and it has been clicked
             if (holding && selectedObject != null && clicked)
             {
                 //We are throwing the object so set the parent back to its original parent
                 selectedObject.transform.parent = selectedObjectsParent;
 
                 //Let our object rotate all it wants now
                 selectedObject.GetComponent<Rigidbody>().freezeRotation = false;
 
                 //Make sure our object can move freely now
                 selectedObject.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.None;
 
                 //Get its rigidbody and throw it in a forward direction from our player with our players throw force
                 selectedObject.GetComponent<Rigidbody>().AddRelativeForce(transform.forward * throwForce, ForceMode.Impulse);
 
                 //We are no longer selecting the object so set it to null
                 selectedObject = null;
 
                 //We are not holding our object so set holding to false
                 holding = false;
 
                 //Our object is no longer selected so set clicked to false
                 clicked = false;
             }
         }
 
         //If we are currently selecting an object and we clicked it
         if (selectedObject != null && clicked)
         {
             //If our object is not throwable then we can not grab it
             if (selectedObject.GetComponent<Rigidbody>() == null)
             {
                 //We are no longer selecting the object so set it to null
                 selectedObject = null;
 
                 //We are not holding our object so set holding to false
                 holding = false;
 
                 //Our object is no longer selected so set clicked to false
                 clicked = false;
 
                 return;
             }
             //Lets parent the selected object we our holding to our player so it follows our rotation
             selectedObject.transform.parent = transform;
 
             //Make sure our object does not rotate around
             selectedObject.GetComponent<Rigidbody>().freezeRotation = true;
 
             //Make sure our object stays held in the air
             selectedObject.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePositionY;
 
             //Set our selected object to follow our players position with a set offset
             Vector3 newObjectPosition = new Vector3(transform.position.x + offset.x, transform.position.y + offset.y, transform.position.z + offset.z);
             selectedObject.transform.position = Vector3.MoveTowards(selectedObject.transform.position, newObjectPosition, speed * Time.deltaTime);
 
             //Now we know we are for sure holding the selected object so set holding to true
             holding = true;
         }
     }
 
     void ClickedOnObject()
     {
         //Will hold the reference for the clicked object
         RaycastHit hit;
 
         //Find the position and direction from the mouse
         Ray ray = cam.ScreenPointToRay(Input.mousePosition);
 
         //Using the direction and origin from the mouse(ray)
         //Output the hit object (out hit)
         //Max Distance the ray can go until it hits an object(reachOfPlayer)
         if (Physics.Raycast(ray, out hit, reachOfPlayer))
         {
             //If the hit object has not been clicked
             if (clicked == false)
             {
                 //Set our selected object
                 selectedObject = hit.transform.gameObject;
 
                 //Save our selected objects original parent
                 selectedObjectsParent = selectedObject.transform.parent;
 
                 //Make sure we set our object as clicked
                 clicked = true;
             }
         }
     }
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 KittenSnipes · Sep 29, 2018 at 09:13 PM 0
Share

@priit1989

Did it not help?

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

549 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

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Player Diagonal Velocity 1 Answer

Dynamic Vector3 axes 1 Answer

Player Movement Help 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