Q:

unity pick up script


using UnityEngine;
using System.Collections;

public class GrabandDrop : MonoBehaviour {
	GameObject grabbedObject;
	float grabbedObjectSize;

	// Use this for initialization
	void Start () {
	
	}

	GameObject GetMouseHoverObject(float range){


		//Check for Collider with Raycast
		Vector3 position = gameObject.transform.position;
		RaycastHit raycastHit;
		Vector3 target = position + Camera.main.transform.forward * range;
		if (Physics.Linecast(position, target, out raycastHit ))
			return raycastHit.collider.gameObject;
		return null;
	}

	void TryGrabbedObject(GameObject grabObject){

		//Check for Object if not null Grab it
		if (grabObject == null || !CanGrab(grabObject))
			return;
		
		grabbedObject = grabObject;
		grabbedObjectSize = grabObject.GetComponent<Renderer>().bounds.size.magnitude;
	}

	//Can grab condition (RigidBody)
	bool CanGrab(GameObject candidate){
		return candidate.GetComponent<Rigidbody> () != null; 

	}

	void DropObject(){

        //Release Direction and Velocity
        //Set multiplier larger for more force
        grabbedObject.GetComponent<Rigidbody> ().velocity = Vector3.forward * 50;
        

        //Check if hands are empty
        if (grabbedObject = null)
			return;
		//if holding object
		if (grabbedObject.GetComponent<Rigidbody> () != null)
			//stop object before release
			grabbedObject.GetComponent<Rigidbody> ().velocity = Vector3.zero;

	}


	// UPDATE is called once per frame
	void Update () {
		//Assign Input for Grab
		if (Input.GetMouseButtonDown (1)) {


			if (grabbedObject == null)
				TryGrabbedObject (GetMouseHoverObject (5));
			//Set Grab and Drop as Same button (Right Mouse Button)
			else DropObject ();
		}

		if (grabbedObject != null) {
			//Set position of grabbed Object after grabbing
			Vector3 newposition = gameObject.transform.position + Camera.main.transform.forward * grabbedObjectSize;
			grabbedObject.transform.position = newposition;



		}




		Debug.Log (GetMouseHoverObject (5));

	
	}
}

0

New to Communities?

Join the community