10-12-2015 02:03 PM
using UnityEngine;
using System.Collections;
public class Reticle : MonoBehaviour {
public Camera CameraFacing;
public Texture2D CrosshairTexture;
public Texture2D UseTexture;
public Texture2D NormalTexture;
private Vector3 originalScale;
public bool isOpen = false;
public GameObject ballanimate;
public GameObject Dooranimate;
void Start () {
originalScale = transform.localScale;
}
void Update () {
RaycastHit hit;
Ray reticle = new Ray (transform.position, Vector3.down);
float distance;
if (Physics.Raycast (new Ray (CameraFacing.transform.position,
CameraFacing.transform.rotation * Vector3.forward),
out hit)) {
if(hit.collider.gameObject.tag == "Ball_Collide")
{
this.gameObject.GetComponent<Renderer>().material.mainTexture = UseTexture;
if(Input.GetButtonDown("Button A"))
{
ballanimate.GetComponent<Animation>().Play("BallBounce");
}
}else if(hit.collider.gameObject.tag == "Door_Animate")
{
this.gameObject.GetComponent<Renderer>().material.mainTexture = UseTexture;
if(Input.GetButtonDown("Button A") && isOpen == false)
{
isOpen = true;
Dooranimate.GetComponent<Animation>().Play("Door_Anim");
}
if(Input.GetButtonDown("Button A") && isOpen == true){
isOpen = false;
Dooranimate.GetComponent<Animation>().Play("Door_Anim_Close");
}
}else if(hit.collider.gameObject.tag == "Ground_Collision"){
this.gameObject.GetComponent<Renderer>().material.mainTexture = NormalTexture;
}
distance = hit.distance;
} else {
distance = CameraFacing.farClipPlane * 0.95f;
this.gameObject.GetComponent<Renderer>().material.mainTexture = NormalTexture;
}
transform.position = CameraFacing.transform.position +
CameraFacing.transform.rotation * Vector3.forward * distance;
transform.LookAt (CameraFacing.transform.position);
transform.Rotate (0.0f, 180.0f, 0.0f);
if (distance < 10.0f) {
distance *= 1 + 5*Mathf.Exp (-distance);
}
transform.localScale = originalScale * distance;
}
}
10-13-2015 04:17 PM