- 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