How can I click/ pickup an object from afar?
Hi, I able to pick up an object close to the camera, but when the object a bit far from the camera, it won't let me pick it up / interact. I can pick it if I adjust the field of view in the camera setting during play. Need Help on this
// I attach this into the camera
using UnityEngine;
using System.Collections;
public class PickupObject : MonoBehaviour {
GameObject camParent;
bool carrying;
GameObject carriedObject;
public float distance;
public float smooth;
// Use this for initialization
void Start () {
camParent = GameObject.FindWithTag("MainCamera");
}
// Update is called once per frame
void Update () {
if(carrying) {
carry(carriedObject);
checkDrop();
//rotateObject();
} else {
pickup();
}
}
void rotateObject() {
carriedObject.transform.Rotate(5,10,15);
}
void carry(GameObject o) {
o.transform.position = Vector3.Lerp (o.transform.position, camParent.transform.position + camParent.transform.forward * distance, Time.deltaTime * smooth);
}
void pickup() {
if(Input.GetMouseButtonDown(1) || (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)) {
int x = Screen.width / 4;
int y = Screen.height / 9;
Ray ray = camParent.GetComponent<Camera>().ScreenPointToRay(new Vector3(x,y));
RaycastHit hit;
if(Physics.Raycast(ray, out hit)) {
Pickupable p = hit.collider.GetComponent<Pickupable>();
if(p != null) {
carrying = true;
carriedObject = p.gameObject;
p.gameObject.GetComponent<Rigidbody>().isKinematic = true;
}
}
}
}
void checkDrop() {
if(Input.GetMouseButtonDown(1)) {
dropObject();
}
}
void dropObject() {
carrying = false;
carriedObject.gameObject.GetComponent<Rigidbody>().isKinematic = false;
carriedObject = null;
}
}
// and this one into the object/marbles
using UnityEngine;
using System.Collections;
public class Pickupable : MonoBehaviour {
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
![alt text][1]
[1]: /storage/temp/103520-123131.jpg
123131.jpg
(351.9 kB)
Comment