private int toSpawnTrack;
//Track Locations Vectors
private Transform currentTrackLocation;
private Vector3 nextTrackLocation;
public void generateTrack()
{
print ("generate Track Called");
//////////////////////////////////////////////////////////////////////////////////
// 1 = straight
// 2 = Curve Left
// 3 = Curve Right
//////////////////////////////////////////////////////////////////////////////////
//Setting the location on next track in line
if(toSpawnTrack == 1)
{
nextTrackLocation = currentTrackLocation.transform.TransformPoint(Vector3.forward * 10);
}
if(toSpawnTrack == 2)
{
nextTrackLocation = currentTrackLocation.transform.TransformPoint(Vector3.left * 10);
}
if(toSpawnTrack == 3)
{
nextTrackLocation = currentTrackLocation.transform.TransformPoint(Vector3.right * 10);
}
//toSpawnTrack = Random.Range(1,4);
toSpawnTrack = 2;
print("toSpawnTrack " + toSpawnTrack);
//Spawn Straight Track
if(toSpawnTrack == 1)
{
//Instancing the next track in line
GameObject trackInstance = Instantiate(planeStraightPreFab, nextTrackLocation, Quaternion.identity) as GameObject;
//Node position for a straight track
Vector3 tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,-5);
nodesList[0] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,0);
nodesList[1] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,5);
nodesList[2] = tempPos;
//Updateing of the current track location
currentTrackLocation = trackInstance.transform;
//Changing the name of the next iTween path so it does not conflict
trackInstance.GetComponent().pathName = "InstPath" + trackCount.ToString();
print ("Spawned Straight Track");
}
//Spawn Curved Left Track
if(toSpawnTrack == 2)
{
Quaternion tempRot = currentTrackLocation.transform.rotation;
print ("tempRot =" + tempRot);
//tempRot = Quaternion.Euler(0,-90,0);
//Instancing the next track in line
GameObject trackInstance = Instantiate(planeCurvedLeft, nextTrackLocation, tempRot) as GameObject;
//Node position for a straight track
Vector3 tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,-5);
nodesList[0] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,0);
nodesList[1] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(-5,1,0);
nodesList[2] = tempPos;
//Updateing of the current track location
currentTrackLocation = trackInstance.transform;
//Changing the name of the next iTween path so it does not conflict
trackInstance.GetComponent().pathName = "InstPath" + trackCount.ToString();
print ("Spawned Curved Left Track");
}
//Spawn Curved Right Track
if(toSpawnTrack == 3)
{
//Instancing the next track in line
GameObject trackInstance = Instantiate(planeCurvedRight, nextTrackLocation, Quaternion.Euler(Vector3.right)) as GameObject;
//Node position for a straight track
Vector3 tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,-5);
nodesList[0] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(0,1,0);
nodesList[1] = tempPos;
tempPos = trackInstance.gameObject.transform.TransformPoint(5,1,0);
nodesList[2] = tempPos;
//Updateing of the current track location
currentTrackLocation = trackInstance.transform;
//Changing the name of the next iTween path so it does not conflict
trackInstance.GetComponent().pathName = "InstPath" + trackCount.ToString();
print ("Spawned Curved Right Track");
}
//Changing the pos of the nodes to new position in relation to
//the instanced prefab.
//print ("1 " + nodesList[0]);
//print ("2 " + nodesList[0]);
//print ("3 " + nodesList[0]);
trackCount++;
pathSwitch();
}
I'm trying to spawn the track so they will flow with each other. Right now only the straight path is working. When I attempt to spawn curved paths, the curved paths either do not align up or facing in a totally different direction. I know its a problem with the rotation of the object when instantiating them and can't seem to work out how to fix it.
↧