how to add a pickup system to your 3d unity game code example
Example: unity pick up script
using UnityEngine;
using System.Collections;
public class GrabandDrop : MonoBehaviour {
GameObject grabbedObject;
float grabbedObjectSize;
void Start () {
}
GameObject GetMouseHoverObject(float range){
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){
if (grabObject == null || !CanGrab(grabObject))
return;
grabbedObject = grabObject;
grabbedObjectSize = grabObject.GetComponent<Renderer>().bounds.size.magnitude;
}
bool CanGrab(GameObject candidate){
return candidate.GetComponent<Rigidbody> () != null;
}
void DropObject(){
grabbedObject.GetComponent<Rigidbody> ().velocity = Vector3.forward * 50;
if (grabbedObject = null)
return;
if (grabbedObject.GetComponent<Rigidbody> () != null)
grabbedObject.GetComponent<Rigidbody> ().velocity = Vector3.zero;
}
void Update () {
if (Input.GetMouseButtonDown (1)) {
if (grabbedObject == null)
TryGrabbedObject (GetMouseHoverObject (5));
else DropObject ();
}
if (grabbedObject != null) {
Vector3 newposition = gameObject.transform.position + Camera.main.transform.forward * grabbedObjectSize;
grabbedObject.transform.position = newposition;
}
Debug.Log (GetMouseHoverObject (5));
}
}