예제 #1
0
 public void UpdateReticleState()
 {
     if (hit.collider.tag == "Selectable")
     {
         state = ReticleStates.Selected;
     }
     else if (hit.collider.tag == "Movable")
     {
         state = ReticleStates.Holding;
     }
     else
     {
         state = ReticleStates.Open;
     }
 }
예제 #2
0
 // Update is called once per frame
 void Update()
 {
     if (Physics.Raycast(new Ray(CameraFacing.transform.position,
                                 CameraFacing.transform.rotation * Vector3.forward),
                         out hit))
     {
         distance = hit.distance;
         UpdateReticleState();
     }
     else
     {
         state    = ReticleStates.Open;
         distance = 100.0f; //if it hits nothing set to default distance
     }
     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 * 0.05f;
     if (state == ReticleStates.Selected)
     {
         r.material.color = selected;
         DisplayHand(true);
     }
     else if (state == ReticleStates.Holding)
     {
         r.material.color = moving;
         if (Input.GetButton("Tap"))
         {
             hit.collider.gameObject.GetComponent <MovePieces>().isSelected = true;
         }
     }
     else
     {
         r.material.color = open;
         DisplayHand(false);
     }
 }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     originalScale = transform.localScale;
     r             = this.gameObject.GetComponent <Renderer> ();
     state         = ReticleStates.Open;
 }