I have currently have a path that wraps around a Sphere from one side to another - this is basically a 3D highway in the sky type object that is a textured road. I have an Aircraft model that I can get to follow this path, however I'm having trouble getting it to rotate correctly so that it is parallel to the surface of the globe
Using the following code:
this.transform.forward = Vector3.RotateTowards(this.transform.forward, this.transform.position - TargetWaypointPos, Airspeed * Time.deltaTime, 0.0f); this.transform.position = Vector3.MoveTowards(this.transform.position, TargetWaypointPos, Airspeed * Time.deltaTime);
This gets the plane to correctly face the next waypoint and follow the path, however I cannot get it to rotate correctly in the Z-space to be parallel to the path/globe. I can compute the correct angle by:
Vector3 yAxis = this.transform.position; yAxis.Normalize(); Vector3 zAxis = nextPoint - this.transform.position; zAxis.Normalize(); xAxis = Vector3.Cross(yAxis, zAxis); xAxis.Normalize(); float angleZ = Vector3.Angle(Vector3.right, xAxis);
However attempting to apply this to my model in any way appears to ruin the Vector3.RotateTowards logic. I must be missing something simple to combine these two.
Any ideas? I'm new to Unity, still figuring out all the available options.