- Home /
 
 
               Question by 
               Bentoon · May 16, 2015 at 03:40 AM · 
                c#ioslerpraycastingtouchphase  
              
 
              Touch count & Raycasting on mobile
Hello All,
Mouse up wasn't really working well for me on Mobile so Aeleck got me up and running with touch count & raycasting
The below script works most of the time
Here's what I'm trying to do:
I have a camera with different iTween Paths on it & I am simply jumping back and forth by activating and deactivating them on mobile And I want the Camara to LERP between the two paths instead of just Jumping immediately.
The Problems so far:
1) On the first recast it goes to the beginning of the path instead of the Camera position recorded in the camPos variable
2) I don't seem to be able to keep switching back and forth, it only lets me switch once or twice and then stops working
Here is the C# code so far:
Thanks for looking
 using UnityEngine;
 using System.Collections;
 
 public class switchAeleck : MonoBehaviour {
 
 
     public    Vector3 newCamPos;
     Vector3 camPos;
     float i = 0.0f;
     public float rate = 2f;
     private bool lerping = false;
     private RaycastHit hit;
 
 
 // these are the different Paths applied to the Camera
     FlythroughCameraController1 a;
     FlythroughCameraControllerA b;
 
 
     public Collider coll;
     void Start() {
         coll = GetComponent<Collider>();
     }
 
 
 
     
     void Update() {
         if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) {
             Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (0).position);
             RaycastHit hit;
             if (coll.Raycast(ray, out hit, 100.0f)) {
                 if (hit.collider.gameObject.tag == "trigger_a") {
                     Debug.Log ("trigger");              
                 
                 Vector3 CamPos = Camera.main.transform.position;
 
 // Again these are the different Paths applied to the Camera                
                 FlythroughCameraController1 a;
                 FlythroughCameraControllerA b;
                 a = Camera.mainCamera.GetComponent<FlythroughCameraController1> ();
                 b = Camera.mainCamera.GetComponent<FlythroughCameraControllerA> ();
 
                 lerping = true;
                 }
             }
         }
 
 
 
         if(lerping) {
 
     //        Vector3 CamPos = Camera.main.transform.position;
 
             a=Camera.mainCamera.GetComponent<FlythroughCameraController1>();
             b=Camera.mainCamera.GetComponent<FlythroughCameraControllerA>();
 
 
             if (a.enabled == true) {
                 Debug.Log ("B");                
                 
                 if(i < 1.0f) {
                     i+= Time.deltaTime * 1/rate;
                     Camera.main.transform.position = Vector3.Lerp(camPos, newCamPos, i);
                 } else if(i >= 1.0f) {
                     lerping = false; i = 1.0f; }
                 
                 StartCoroutine (myWait ());
                 a.enabled = false;    
                 b.enabled = true;
                 
             }
             
             
             else if (b.enabled == true) {
                 Debug.Log ("A");
                 
                 if(i < 1.0f) {
                     i+= Time.deltaTime * 1/rate;
                     Camera.main.transform.position = Vector3.Lerp(camPos, newCamPos, i);
                 } else if(i >= 1.0f) {
                     lerping = false;
                     i = 1.0f;
                 } 
                 StartCoroutine (myWait ()); b.enabled = false; a.enabled = true; 
             } 
         } 
     }
 
 
     IEnumerator myWait()
     {
         Debug.Log ("myWait");
         yield return new WaitForSeconds (2.0f);
     }
 
 
 }
 
 
              
               Comment
              
 
               
              Your answer