//private Vector3 lastPos; //private void Start() //{ // lastPos = transform.position; //} private void Update() { // 1 var pos = transform.position; var s = SphereUtility.CartesianToSpherical(pos); target.r = s.x; target.lat = s.y; target.lon = s.z; // 2 //var pos = transform.position; // NOTE: spherical positions can't be subtracted like this //var s = SphereUtility.CartesianToSpherical(pos) - SphereUtility.CartesianToSpherical(lastPos); //lastPos = pos; //target.r += s.x; //target.lat += s.y; //target.lon += s.z; // 3 //var pos = transform.position; //var s = SphereUtility.CartesianToSpherical(pos) - SphereUtility.CartesianToSpherical(lastPos); //target.r += s.x; ////target.lat += s.y; ////target.lon += s.z; //var quat = Quaternion.FromToRotation(lastPos, pos); ////Debug.Log(quat.eulerAngles); //target.transform.rotation = quat * target.transform.rotation; //lastPos = pos; }
public void StartRecord() { mytrail.Clear(); startPos = transform.position; startSph = new Spherical3(); SphereUtility.CartesianToSpherical(startPos - origin.transform.position, out startSph); mytrail.Push(startSph); StartCoroutine("Recording"); }
// Update is called once per frame void Update() { Spherical3 sc = new Spherical3(); Vector3 where = toTrack.transform.position - origin.transform.position; SphereUtility.CartesianToSpherical(where, out sc); // reflecting sc.p *= -1; Vector3 nwhere = new Vector3(); SphereUtility.SphericalToCartesian(sc, out nwhere); transform.position = startPos + nwhere; }
IEnumerator Recording() { while (true) { Vector3 where = transform.position - origin.transform.position; if (randomize) { where.x += Random.Range(-0.5f, 0.5f); where.y += Random.Range(-0.5f, 0.5f); where.z += Random.Range(-0.5f, 0.5f); } SphereUtility.CartesianToSpherical(where, out sc); mytrail.Push(sc); Debug.Log(mytrail.Count); yield return(new WaitForSeconds(0.1f)); } }