You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

85 lines
2.0 KiB

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class magnetGun2 : MonoBehaviour {
public Camera camera;
public GameObject crossHair;
public GameObject gravityWell;
public thirdPersonController playerController;
public float magnetMaxRange;
public float magnetMinRange;
private Collider gravityTarget;
// Use this for initialization
void Start () {
magnetMinRange += playerController.cameraDistance;
magnetMaxRange += playerController.cameraDistance;
}
// Update is called once per frame
void Update () {
RaycastHit target = testItem ();
if (gravityTarget != null)
pickUpItem (target);
}
//test to see if player can move item
private RaycastHit testItem(){
RaycastHit hit;
//resets cross hair to white
crossHair.GetComponent<RawImage> ().color = Color.white;
//cast ray from camera through the crosshair on screen
Ray ray = camera.ScreenPointToRay (crossHair.transform.position);
Debug.DrawRay (ray.origin, ray.direction*magnetMaxRange, Color.green);
// if player can pickup object turn crosshair red
// if object is close enougth to move with it turn blue;
if (Physics.Raycast (ray, out hit, magnetMaxRange)) {
if (hit.collider.tag == "moveable"){
gravityTarget = hit.collider;
Debug.DrawRay (ray.origin,ray.direction*magnetMaxRange, Color.red);
crossHair.GetComponent<RawImage>().color = Color.red;
if (Vector3.Distance (hit.point, camera.transform.position) <= magnetMinRange) {
crossHair.GetComponent<RawImage>().color = Color.blue;
}//end blue
}//end red
}//end raycast
return hit;
}// end testItem()
private void pickUpItem(RaycastHit hit){
Collider item = hit.collider;
//prepares item to be lifted
item.attachedRigidbody.useGravity = false;
item.attachedRigidbody.drag = 3.0f;
item.attachedRigidbody.constraints = RigidbodyConstraints.FreezeRotation;
gravityWell.transform.position = item.transform.position;
transform.LookAt (gravityWell.transform.position, Vector3.up);
}
}