Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- [RequireComponent(typeof(Camera))]
- public class ObjectDragging : MonoBehaviour
- {
- private GameObject draggedObject;
- private Rigidbody draggedObjectRigidbody;
- private GameObject oldParent;
- private bool objectHeld;
- private Transform originPoint;
- private new Camera camera;
- void Start()
- {
- camera = GetComponent<Camera>();
- }
- void Update ()
- {
- CheckForGrab();
- ReticleCheck();
- }
- void CheckForGrab()
- {
- if (Input.GetKeyDown(KeyCode.Mouse0))
- {
- if (!objectHeld)
- GrabObject();
- else
- DropObject();
- }
- }
- void ReticleCheck()
- {
- if (objectHeld)
- {
- Ray ray = camera.ScreenPointToRay(new Vector3(camera.pixelWidth / 2, camera.pixelHeight / 2));
- RaycastHit hit;
- if (Physics.Raycast(ray, out hit) && hit.transform.tag != "Draggable")
- {
- DropObject();
- }
- }
- }
- void GrabObject()
- {
- if (!objectHeld)
- {
- Ray ray = camera.ScreenPointToRay(new Vector3(camera.pixelWidth / 2, camera.pixelHeight / 2));
- RaycastHit hit;
- if (Physics.Raycast(ray, out hit) && hit.transform.tag == "Draggable")
- {
- if (hit.distance > 5)
- return;
- objectHeld = true;
- draggedObject = hit.transform.gameObject;
- draggedObjectRigidbody = draggedObject.GetComponent<Rigidbody>();
- draggedObjectRigidbody.useGravity = false;
- draggedObjectRigidbody.drag = 10;
- oldParent = draggedObject.transform.parent.gameObject;
- draggedObject.transform.parent = this.transform;
- }
- }
- }
- void DropObject()
- {
- objectHeld = false;
- draggedObjectRigidbody.useGravity = true;
- draggedObjectRigidbody.drag = 0;
- draggedObject.transform.parent = oldParent.transform;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement